elder-orm/core

View on GitHub
src/classes/adapter.ts

Summary

Maintainability
B
5 hrs
Test Coverage
import Model from './model'
import DatabaseConnectionError from './errors/connection-error'
export { DatabaseConnectionError }

export default class Adapter {
  config: databaseConfig

  constructor(config: databaseConfig) {
    this.config = config
  }

  static create<T extends typeof Adapter>(
    this: T,
    config: databaseConfig,
    ...args: any[]
  ): T['prototype'] {
    return new this(config, ...args)
  }

  one(Ctor: typeof Model, where: where, options?: optsSingle): Promise<pojo> {
    return Promise.resolve({})
  }

  oneById(Ctor: typeof Model, id: number, options?: optsSingle): Promise<pojo> {
    return Promise.resolve({})
  }

  oneBySql(
    Ctor: typeof Model,
    sql: string,
    params?: string[] | number[],
    options?: optsSingle
  ): Promise<pojo> {
    return Promise.resolve({})
  }

  some(
    Ctor: typeof Model,
    where: where,
    options?: optsMultiple
  ): Promise<pojo[]> {
    return Promise.resolve([])
  }

  someBySql(
    Ctor: typeof Model,
    sql: string,
    params?: string[] | number[],
    options?: optsMultiple
  ): Promise<pojo[]> {
    return Promise.resolve([])
  }

  all(Ctor: typeof Model, options?: optsMultiple): Promise<pojo[]> {
    return Promise.resolve([])
  }

  createRecord(Ctor: typeof Model, props: pojo): Promise<pojo> {
    return Promise.resolve({})
  }

  createSome(Ctor: typeof Model, records: pojo[]): Promise<number> {
    return Promise.resolve(0)
  }

  updateRecord(
    Ctor: typeof Model,
    key: string | number,
    props: { [name: string]: any }
  ): Promise<pojo> {
    return Promise.resolve({})
  }

  deleteRecord(Ctor: typeof Model, key: string | number): Promise<void> {
    return Promise.resolve()
  }

  deleteAll(Ctor: typeof Model): Promise<number> {
    return Promise.resolve(0)
  }

  deleteSome(Ctor: typeof Model, where: where): Promise<number> {
    return Promise.resolve(0)
  }

  deleteOne(Ctor: typeof Model, where: where): Promise<number> {
    return Promise.resolve(0)
  }

  deleteOneById(Ctor: typeof Model, id: number): Promise<number> {
    return Promise.resolve(0)
  }

  updateAll(Ctor: typeof Model, props: props): Promise<number> {
    return Promise.resolve(0)
  }

  updateSome(Ctor: typeof Model, where: where, props: props): Promise<number> {
    return Promise.resolve(0)
  }

  updateOneById(Ctor: typeof Model, id: number, props: props): Promise<number> {
    return Promise.resolve(0)
  }

  updateOne(Ctor: typeof Model, where: where, props: props): Promise<number> {
    return Promise.resolve(0)
  }

  truncate(Ctor: typeof Model): Promise<void> {
    return Promise.resolve()
  }

  countAll(Ctor: typeof Model): Promise<number> {
    return Promise.resolve(0)
  }

  countSome(Ctor: typeof Model, where: where): Promise<number> {
    return Promise.resolve(0)
  }

  destroy(): Promise<void> {
    return Promise.resolve()
  }
}

export type databaseConfig = {
  database: string
  host?: string
  user?: string
  password?: string
  port?: number
}

export type optsMultiple = {
  include?: string | string[]
  sort?: string
  fields?: string[]
  limit?: number
  page?: number
}

export type optsSingle = {
  include?: string | string[]
  fields?: string[]
}

export type where = { [key: string]: any } | Array<any>
export type props = { [key: string]: any }

export type pojo = {
  [key: string]: any
}