UNPKG

@3wks/generator-gae-node-nestjs

Version:

A generator for building nestjs apps on app engine node

61 lines (53 loc) 1.35 kB
import { Repository, DatastoreProvider } from '@3wks/gae-node-nestjs'; import * as t from '@3wks/gae-node-nestjs/dist/types'; import { Injectable } from '@nestjs/common'; const userBase = t.partial({ avatar: t.string, }); // TODO: Customise roles enum for your application const rolesArray = t.array(t.union([t.literal('super'), t.literal('admin'), t.literal('user')])); const userInputSchema = t.intersection([ userBase, t.partial({ name: t.string, email: t.string, roles: rolesArray, enabled: t.boolean, }), ]); const userCreateSchema = t.intersection([ userInputSchema, t.interface({ email: t.string, roles: rolesArray, }), ]); const userSchema = t.intersection([ userCreateSchema, t.interface({ id: t.string, enabled: t.boolean, }), t.partial({ orgId: t.string, }), ]); export type UserInput = t.TypeOf<typeof userInputSchema>; export type UserCreate = t.TypeOf<typeof userCreateSchema>; export type User = t.TypeOf<typeof userSchema>; @Injectable() export class UserRepository extends Repository<User> { constructor(datastore: DatastoreProvider) { super(datastore.datastore, 'User', userSchema, { index: { email: true, roles: true, orgId: true, }, defaultValues: { roles: [], enabled: true, }, }); } }