mirror of
https://github.com/khairul169/github-leaderboard.git
synced 2025-04-28 15:39:31 +07:00
37 lines
1.1 KiB
TypeScript
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>;
|