This package has been deprecated

Author message:

Package no longer supported.

@stdjs/database
TypeScript icon, indicating that this package has built-in type declarations

2.0.0 • Public • Published

STDJS - Database

Downloads Version License Typescript

Database Adapter with Async/Promise for Javascript(& Typescript).

Installation

npm install @stdjs/database --save

Support Database Connection

  • mysql
    • npm install mysql --save (in typescript npm install @types/mysql -D)
  • mysql2
    • npm install mysql2 --save (in typescript npm install types/mysql2 -D)
  • pg
    • npm install pg --save (in typescript npm install @types/pg -D)
  • sqlite3
    • npm install sqlite3 --save (in typescript npm install @types/sqlite3 -D)

Interfaces

All adapter objects inherit the following interfaces:

export type TransactionHandler<TResult> = (connection: Connection) => Promise<TResult> | TResult

export interface Connector {
  dialect: string
  connect(): Connection
}

export interface Pool extends Connection {
  getConnection(): Promise<PoolConnection>
}

export interface PoolConnection extends Connection {
  release(): Promise<void>
}

export interface Connection {
  close(): Promise<void>
  query(query: string, values?: any[]): Promise<QueryResult>
  first<TRow>(query: string, values?: any[]): Promise<TRow> // throw RowNotFoundError
  select<TRow extends Row>(query: string, values?: any[]): Promise<TRow[]>
  transaction<TResult>(handler: TransactionHandler<TResult>): Promise<TResult>
}

export interface QueryResult {
  insertId?: number|string // insert query only
  changes: number
  raw: any
}

export interface Row {
  [key: string]: any
}

Usage

You can create as follows:

(Please refer to the Config section for config.)

const database = require("@stdjs/database")
const connection = database.createConnection(/* Connector */)

// or
import { create } from "@stdjs/database"
const connection = createConnection(/* Connector */)

Create Connection

mysql

Options

import { createConnection } from "@stdjs/database" 
import { MysqlConnector } from '@stdjs/database/lib/driver/mysql'

const connection = createConnection(new MysqlConnector({
  /* mysql connection options */
}))

const pool = createConnection(new MysqlConnector({
  pool: true,
  /* mysql pool options */
}))

mysql2

Options

import { createConnection } from "@stdjs/database" 
import { Mysql2Connector } from '@stdjs/database/lib/driver/mysql2'

const connection = createConnection(new Mysql2Connector({
  /* mysql2 connection options */
}))

const pool = createConnection(new Mysql2Connector({
  pool: true,
  /* mysql2 pool options */
}))

pg

Options

import { createConnection } from "@stdjs/database" 
import { PgConnector } from '@stdjs/database/lib/driver/pg'

const connection = createConnection(new PgConnector({
  /* pg connection options */
}))

const pool = createConnection(new PgConnector({
  pool: true,
  /* pg pool options */
}))

sqlite3

Options

interface Sqlite3ConnectorOptions {
  filename: string
  mode?: number
}
import { createConnection } from "@stdjs/database" 
import { Sqlite3Connector } from '@stdjs/database/lib/driver/sqlite3'

const connection = createConnection(new Sqlite3Connector({
  /* sqlite3 connection options (Sqlite3ConnectorOptions) */
}))

Cluster Connection

If you are using the cluster as AWS Aurora DB, you can do the following:

import { createCluster } from "@stdjs/database" 
import { Mysql2Connector } from '@stdjs/database/lib/driver/mysql2'

const connection = createCluster({
  write: new Mysql2Connector({
    pool: true,
    host: "stdjs.com",
  }),
  read: new Mysql2Connector({
    pool: true,
    host: "readonly.stdjs.com",
  }),
})

The select and first methods use read connection and the query method uses write connection.

License

MIT

Package Sidebar

Install

npm i @stdjs/database

Weekly Downloads

0

Version

2.0.0

License

MIT

Unpacked Size

142 kB

Total Files

91

Last publish

Collaborators

  • npm