orm-ts
TypeScript icon, indicating that this package has built-in type declarations

0.5.13 • Public • Published

orm-ts

CI Coverage Version License

Install

npm i orm-ts --save

Example

a simple example

service:

@register()
export class ActivityService {
  @lazyInject()
  private acitvityDomain: ActivityDomain;

  async getById(id: number) {
    return this.acitvityDomain.getById(id);
  }
}

domain:

@register()
export class ActivityDomain extends BaseDomain {
  @lazyInject()
  repository: ActivityRepository;

  async getById(id: number) {
    return this.repository.getById(id);
  }
}

repository:

@repository(ActivityModel)
export class ActivityRepository extends BaseRepository<ActivityModel> {
}

@repository(UserModel)
export class UserRepository extends BaseRepository<UserModel> {

  @cachePut((username: string) => `user_${username}`, { expiredTime: 30 * 60 })
  @bindSql(`select * from #table# where username = #username#`, { page: false })
  async getByUsername(username: string) {
    // SQL
    return new UserModel(this.queryOne(`
        xxxxxxxx
    `, arguments));
  }

  async add(model: UserModel) { }

  @cacheEvict((username: string) => `user_${username}`)
  async updateByUsername(username: string, model: UserModel) { }

  @cacheEvict((username: string) => `user_${username}`)
  async deleteByUsername(username: string) { }
}

domain:

export class ActivityModel extends BaseModel {
  id: number;

  @manyToOne('owner', UserModel, 'getByUsername')
  user: Promise<UserModel>;

  @manyToOne('teamId', TeamModel)
  team: Promise<TeamModel>;
}

export class UserModel extends BaseModel {
  id: number;

  @valid([
    { minLength: 10 },
    { custom: (str: string) => true, errorMsg: 'xxx' }
  ])
  username: string;
}

See the full example.

Readme

Keywords

Package Sidebar

Install

npm i orm-ts

Weekly Downloads

6

Version

0.5.13

License

MIT

Unpacked Size

104 kB

Total Files

95

Last publish

Collaborators

  • paranoidjk
  • zhang740
  • concefly