37 lines
1.1 KiB
TypeScript

import { Achievement } from "@server/lib/github";
import { InferInsertModel, InferSelectModel, sql } from "drizzle-orm";
import {
varchar,
pgTable,
serial,
integer,
jsonb,
timestamp,
} from "drizzle-orm/pg-core";
export const users = pgTable("users", {
id: serial("id").primaryKey(),
username: varchar("username").notNull().unique(),
name: varchar("name").notNull(),
avatar: varchar("avatar"),
location: varchar("location"),
followers: integer("followers").notNull().default(0),
following: integer("following").notNull().default(0),
achievements: jsonb("achievements").$type<Achievement[]>().default([]),
points: integer("points").notNull().default(0),
commits: integer("commits").notNull().default(0),
lineOfCodes: integer("line_of_codes").notNull().default(0),
githubId: integer("github_id").unique(),
accessToken: varchar("access_token"),
createdAt: timestamp("created_at")
.notNull()
.default(sql`CURRENT_TIMESTAMP`),
updatedAt: timestamp("updated_at")
.notNull()
.$onUpdate(() => new Date()),
});
export type User = InferSelectModel<typeof users>;
export type CreateUser = InferInsertModel<typeof users>;