// AUTO-GENERATED by `wrnexus db generate` — do not edit.
import type { Db, ExecResult } from "@wrnexus/db";
import { users } from "./schema.ts";

export async function GetUserByEmail(db: Db, args: { email: string }): Promise<{ id: number; email: string; name: string; active: boolean; passwordHash: string; createdAt: Date } | null> {
  return (await db.one("SELECT * FROM users WHERE email = ?", [args.email], users)) as { id: number; email: string; name: string; active: boolean; passwordHash: string; createdAt: Date } | null;
}

export async function ListUsers(db: Db): Promise<{ id: number; name: string; active: boolean }[]> {
  return (await db.all("SELECT id, name, active FROM users ORDER BY name", [], users)) as { id: number; name: string; active: boolean }[];
}

export async function CountActive(db: Db, args: { active: boolean }): Promise<{ n: number } | null> {
  return (await db.one("SELECT COUNT(*) AS n FROM users WHERE active = ?", [args.active])) as { n: number } | null;
}

export async function CreateUser(db: Db, args: { email: string; name: string; active: boolean }): Promise<ExecResult> {
  return db.exec("INSERT INTO users (email, name, active) VALUES (?, ?, ?)", [args.email, args.name, args.active]);
}

export async function DeactivateUser(db: Db, args: { id: number }): Promise<ExecResult> {
  return db.exec("UPDATE users SET active = 0 WHERE id = ?", [args.id]);
}
