import { getDb } from '../client'
import { user } from '../schema'
import { eq, asc, sql } from 'drizzle-orm'

/**
 * User Repository（Better-Auth user 表，驼峰字段名）。
 * 字段严格对齐 Better-Auth 官方 schema：createdAt/updatedAt/emailVerified 等驼峰。
 */

export const userRepo = {
  /** 查全部 */
  list() {
    return getDb().select().from(user).all()
  },

  /** 按 id 查 */
  findById(id: string) {
    return getDb().select().from(user).where(eq(user.id, id)).get()
  },

  /** 按 email 查 */
  findByEmail(email: string) {
    return getDb().select().from(user).where(eq(user.email, email)).get()
  },

  /** 第一个创建的用户（用于所有权回填，按 createdAt 升序） */
  findFirstCreated() {
    return getDb().select().from(user).orderBy(asc(user.createdAt)).get()
  },

  /** 用户总数 */
  count(): number {
    const row = getDb().select({ c: sql<number>`count(*)` }).from(user).get()
    return row?.c ?? 0
  },

  /** 创建用户 */
  create(data: typeof user.$inferInsert) {
    getDb().insert(user).values(data).run()
  },

  /** 更新指定字段 */
  updateFields(id: string, fields: Partial<typeof user.$inferInsert>) {
    getDb().update(user).set(fields).where(eq(user.id, id)).run()
    return this.findById(id)
  },
}
