leistungsbilanz-ts/src/db/schema/users.ts

28 lines
1 KiB
TypeScript

import { sql } from "drizzle-orm";
import { integer, sqliteTable, text, uniqueIndex } from "drizzle-orm/sqlite-core";
import type { UserRole } from "../../shared/constants/user-roles.js";
export const users = sqliteTable(
"users",
{
id: text("id").primaryKey(),
username: text("username").notNull(),
passwordHash: text("password_hash").notNull(),
name: text("name").notNull(),
role: text("role").$type<UserRole>().notNull().default("user"),
active: integer("active", { mode: "boolean" }).notNull().default(true),
mustChangePassword: integer("must_change_password", { mode: "boolean" })
.notNull()
.default(true),
createdAt: integer("created_at", { mode: "timestamp" })
.notNull()
.default(sql`(unixepoch())`),
updatedAt: integer("updated_at", { mode: "timestamp" })
.notNull()
.default(sql`(unixepoch())`),
},
(table) => [uniqueIndex("users_username_unique").on(table.username)]
);
export type User = typeof users.$inferSelect;
export type NewUser = typeof users.$inferInsert;