3.0.0 • Published 2 years ago

@zenweb/repositories v3.0.0

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

ZenWeb ORM Repositories module

ZenWeb ZenORM

ZenORM Repositories 集成 - 此项目通常配合 @zenweb/tenant 多租户支持

安装

# 生产依赖
npm install zenorm @zenweb/mysql @zenweb/repositories

# 开发依赖
npm install @zenorm/generate @zenorm/generate-mysql --save-dev

配置

package.jsonscripts 中增加如下代码,用于执行 dbgen 命令

{
  "scripts": {
    "dbgen": "zenorm-generate .dbgen.json"
  }
}

创建文件 .dbgen.json 用于生成数据库结构代码时连接到指定数据库

提示:运行时并不使用此配置

{
  "host": "localhost",
  "port": 3306,
  "user": "root",
  "password": "",
  "database": "zenorm_test",
  "outputDir": "./model",
  "generateRepositories": true,
  "declareRepositoriesToModules": [
    "@zenweb/core.Core.repositories"
  ]
}

生成数据库结构代码

运行命令开始生成数据库结构代码

npm run dbgen

项目配置

编辑项目入口代码 src/index.ts

import { create } from 'zenweb';
import modMySQL from '@zenweb/mysql';
import modRepositories from '@zenweb/repositories';
import { Repositories } from './model';

export const app = create();

app.setup(modMySQL({
  pools: {
    // 数据库服务器设置
    MASTER: {
      host: '127.0.0.1',
      port: 3306,
      user: 'root',
      password: '123456',
      database: 'zenorm_test',
      charset: 'utf8mb4',
      timezone: '+08:00',
      connectionLimit: 100,
    },
  },
  // 使用 Context 初始化连接池
  withContext: true,
}));

// 设置 ORM
app.setup(modRepositories({
  contextQuery: (ctx) => ctx.mysql,
  Repositories,
}));

代码中调用

import { mapping, Context } from 'zenweb';

export class TestController {
  @mappping()
  dbtest(ctx: Context) {
    const { UserRepository } = ctx.repositories;
    return UserRepository.find({ id: 1 }).get();
  }
}