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)
  }
}