2.0.0-rc.86 • Published 5 years ago

node-jql-core v2.0.0-rc.86

Weekly downloads
7
License
Apache-2.0
Repository
github
Last release
5 years ago

node-jql-core

npm version

This is a SQL database mainly designed for providing an interface for JSON processing with the SQL syntax. It works with the syntax library node-jql

Memory Engine

PAY ATTENTION

Note: It's still under development. Please avoid using it in production

Note: It's not fully optimized, and may be slow. Please avoid doing intensive computation with this engine

Note: NodeJS version 8 or higher is highly recommended due to the native support of async/await

Usage

(async () => {
  // initialize core
  const core = new ApplicationCore({ defaultEngine: new InMemoryDatabaseEngine({ logger: new Logger('InMemoryDatabaseEngine') }) })
  await core.init()

  // create session
  const session = core.createSession()

  /**
   * USE database
   */
  session.use(string)

  /**
   * ID of the last running task
   */
  session.lastTaskId

  /**
   * CRETAE, INSERT, UPDATE, ALTER etc.
   */
  session.update(JQL)

  /**
   * Predict SELECT result structure
   */
  session.predict(JQL)

  /**
   * SELECT
   */
  session.query(JQL)

  /**
   * Kill running task
   */
  session.kill(string)

  /**
   * Close the session
   */
  session.close(boolean?)
})()

Custom Engine

You can develop your custom engine.

Please check CancelablePromise

abstract class DatabaseEngine {
  protected initing = false
  protected inited = false

  /**
   * Initialize the engine
   */
  public abstract async init(): Promise<void>

  /**
   * Retrieve all rows from a table
   * @param database [string] database name
   * @param table [string] table name
   */
  public abstract retrieveRowsFor(database: string, table: string): CancelablePromise<any[]>

  /**
   * Get the row count of a table
   * @param database [string] database name
   * @param table [string] table name
   */
  public abstract getCountOf(database: string, table: string): CancelablePromise<number>

  /**
   * Create a database
   * @param name [string]
   */
  public abstract createDatabase(name: string): TaskFn<IUpdateResult>

  /**
   * Drop a database
   * @param name [string]
   */
  public abstract dropDatabase(name: string): TaskFn<IUpdateResult>

  /**
   * Execute an UPDATE JQL
   * @param jql [JQL]
   */
  public abstract executeUpdate(jql: JQL): TaskFn<IUpdateResult>

  /**
   * Execute a SELECT JQL
   * @param jql [AnalyzedQuery]
   */
  public abstract executeQuery(jql: AnalyzedQuery): TaskFn<IQueryResult>
}
type TaskFn<T> = (task: Task<T>) => CancelablePromise<T>

class Task {
  /**
   * Task ID
   */
  public readonly id = uuid()

  /**
   * Task that can be canceled
   */
  public readonly promise: CancelablePromise<T>

  /**
   * Start time of the task
   */
  public readonly startFrom = Date.now()

  /**
   * Task status
   */
  public statusCode = StatusCode.PREPARING
}

Performance Benchmark

Try it with npm run test or yarn test. It will traverse 200000 rows of data at maximum in specific cases.

2.0.0-rc.86

5 years ago

2.0.0-rc.85

5 years ago

2.0.0-rc.84

5 years ago

2.0.0-rc.83

5 years ago

2.0.0-rc.82

5 years ago

2.0.0-rc.81

5 years ago

2.0.0-rc.80

5 years ago

2.0.0-rc.79

5 years ago

2.0.0-rc.78

5 years ago

2.0.0-rc.77

5 years ago

2.0.0-rc.76

5 years ago

2.0.0-rc.75

5 years ago

2.0.0-rc.73

5 years ago

2.0.0-rc.74

5 years ago

2.0.0-rc.72

5 years ago

2.0.0-rc.71

5 years ago

2.0.0-rc.70

5 years ago

2.0.0-rc.69

6 years ago

2.0.0-rc.68

6 years ago

2.0.0-rc.67

6 years ago

2.0.0-rc.66

6 years ago

2.0.0-rc.65

6 years ago

2.0.0-rc.64

6 years ago

2.0.0-rc.63

6 years ago

2.0.0-rc.62

6 years ago

2.0.0-rc.61

6 years ago

2.0.0-rc.60

6 years ago

2.0.0-rc.59

6 years ago

2.0.0-rc.58

6 years ago

2.0.0-rc.57

6 years ago

2.0.0-rc.56

6 years ago

2.0.0-rc.55

6 years ago

2.0.0-rc.54

6 years ago

2.0.0-rc.53

6 years ago

2.0.0-rc.52

6 years ago

2.0.0-rc.51

6 years ago

2.0.0-rc.49

6 years ago

2.0.0-rc.48

6 years ago

2.0.0-rc.47

6 years ago

2.0.0-rc.46

6 years ago

2.0.0-rc.45

6 years ago

2.0.0-rc.44

6 years ago

2.0.0-rc.43

6 years ago

2.0.0-rc.42

6 years ago

2.0.0-rc.41

6 years ago

2.0.0-rc.40

6 years ago

2.0.0-rc.39

6 years ago

2.0.0-rc.38

6 years ago

2.0.0-rc.37

6 years ago

2.0.0-rc.36

6 years ago

2.0.0-rc.35

6 years ago

2.0.0-rc.34

6 years ago

2.0.0-rc.33

6 years ago

2.0.0-rc.32

6 years ago

2.0.0-rc.31

6 years ago

2.0.0-rc.30

6 years ago

2.0.0-rc.29

6 years ago

2.0.0-rc.28

6 years ago

2.0.0-rc.27

6 years ago

2.0.0-rc.26

6 years ago

2.0.0-rc.25

6 years ago

2.0.0-rc.24

6 years ago

2.0.0-rc.23

6 years ago

2.0.0-rc.22

6 years ago

2.0.0-rc.21

6 years ago

2.0.0-rc.20

6 years ago

2.0.0-rc.19

6 years ago

2.0.0-rc.18

6 years ago

2.0.0-rc.17

6 years ago

2.0.0-rc.16

6 years ago

2.0.0-rc.15

6 years ago

2.0.0-rc.14

6 years ago

2.0.0-rc.13

6 years ago

2.0.0-rc.12

6 years ago

2.0.0-rc.11

6 years ago

2.0.0-rc.10

6 years ago

2.0.0-rc.9

6 years ago

2.0.0-rc.8

6 years ago

2.0.0-rc.7

6 years ago

2.0.0-rc.6

6 years ago

2.0.0-rc.5

6 years ago

2.0.0-rc.4

6 years ago

2.0.0-rc.3

6 years ago

2.0.0-rc.2

6 years ago

2.0.0-rc.1

6 years ago

1.6.6

6 years ago

1.6.5

6 years ago

1.6.4

6 years ago

1.6.3

6 years ago

1.6.2

6 years ago

1.6.1

6 years ago

1.0.0-rc.36

6 years ago

1.0.0-rc.35

6 years ago

1.0.0-rc.34

6 years ago

1.0.0-rc.33

6 years ago

1.0.0-rc.32

6 years ago

1.0.0-rc.31

6 years ago

1.0.0-rc.30

6 years ago

1.0.0-rc.29

6 years ago

1.0.0-rc.28

6 years ago

1.0.0-rc.27

6 years ago

1.0.0-rc.26

6 years ago

1.0.0-rc.25

6 years ago

1.0.0-rc.24

6 years ago

1.0.0-rc.23

6 years ago

1.0.0-rc.22

6 years ago

1.0.0-rc.21

6 years ago

1.0.0-rc.20

6 years ago

1.0.0-rc.19

6 years ago

1.0.0-rc.18

6 years ago

1.0.0-rc.17

6 years ago

1.0.0-rc.16

6 years ago

1.0.0-rc.15

6 years ago

1.0.0-rc.14

6 years ago

1.0.0-rc.13

6 years ago

1.0.0-rc.12

6 years ago

1.0.0-rc.11

6 years ago

1.0.0-rc.10

6 years ago

1.0.0-rc.9

6 years ago

1.0.0-rc.8

6 years ago

1.0.0-rc.7

6 years ago

1.0.0-rc.6

6 years ago

1.0.0-rc.5

6 years ago

1.0.0-rc.4

6 years ago

1.0.0-rc.3

6 years ago

1.0.0-rc.2

6 years ago

1.0.0-rc.1

6 years ago