0.0.4 • Published 2 years ago

@bpframework/middleware-db v0.0.4

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

database middleware in bpframework.

Middleware specification

https://github.com/bpcloud/middleware

Setup.

import { Application } from 'bpframework';
import * as middleware_db from '@bpframework/middleware-db';

Application.use(middleware_db.middleware)
Application.runKoa(...);

Config.

spring.db:
  # db type: mysql, mssql
  type: mysql
  # (optional) timeout of connect to database.
  connectTimeout: 5000
  # (optional) timeout of query.
  queryTimeout: 5000
  # (optional) timeout of acquire connection from pool.
  acquireTimeout: 5000
  # (optional) max queue length of wait for acquire connection.
  queueLimit: 200
  # (optional) max count of connection in pool.
  connectionLimit: 10
  # (optional) idle timeout to recreate connect
  idleTimeoutMillis: 600000
  # database host.
  host: 127.0.0.1
  # (optional) databse port.
  port: 3306
  # database name.
  database: dbname 
  # user name of databse.
  user: username
  # the password of user.
  password: password
  # (optional) table prefix name.
  table_prefix: prefix_

Define table.

/**
 * table model
 */
@Table('tablename')
class Table1Model {
  @Column({ type: dataType.Char(32), primaryKey: true })
  id: string;

  @Column({ type: dataType.VarChar(64) })
  col1: string;

  @Column({ type: dataType.Bit() })
  col2: boolean;
}

/**
 * table mapper
 */
class Table1Mapper extends BaseMapper<Table1Model> implements IBaseMapper {
  /** Must have this static member */
  static Model = Table1Model;
}

Define Bean.

@Service()
class DBConfigure {
  @Bean()
  dbTemplate(): DBTemplate {
    return new DBTemplate();
  }
}

Use.

@Service()
class DBService {

  @Autowired("dbTemplate")
  dbTemplate: DBTemplate;

  async foo(): Promise<void> {
    
    // get mapper.
    let mapper: Table1Mapper = this.dbTemplate.getMapper(Table1Mapper);

    // query.
    let count = await mapper.count('1=1');
    console.log(`count: ${count}`);

    let exist = await mapper.exist('617a46bf66555e3ea251000001a5da4f');
    console.log(`exist: ${exist}`);
    
    let select = await mapper.select(
      mapper.condition.equal('id', '617a46bf66555e3ea251000001a5da4f')
    );
    console.log(`select: ${JSON.stringify(select[0])}`);
    
    let selectById = await mapper.selectById(
      '617a46bf66555e3ea251000001a5da4f'
    );
    console.log(`selectById: ${JSON.stringify(selectById)}`);

    // exec.
    await this.dbTemplate.exec('select * from tablename');
  }
}