import {Repository} from '@orion-js/services'
import {createCollection, typedId, OptionalId} from '@orion-js/mongodb'
import {schemaWithName, InferSchemaType} from '@orion-js/schema'
const UserSchema = schemaWithName('UserSchema', {
_id: {type: typedId('user')},
name: {type: String},
email: {type: String, optional: true}
})
type UserType = InferSchemaType<typeof UserSchema>
@Repository()
export class UserRepository {
users = createCollection({
name: 'users',
schema: UserSchema,
// Other options...
})
async findByEmail(email: string): Promise<UserType | null> {
return await this.users.findOne({email})
}
async createUser(userData: OptionalId<UserType>): Promise<string> {
return await this.users.insertOne(userData)
}
}