Files
money/packages/shared/src/db/schema/public.ts
2025-11-24 22:20:40 -05:00

68 lines
2.1 KiB
TypeScript

import {
boolean,
decimal,
pgTable,
text,
timestamp,
pgEnum,
uniqueIndex,
} from "drizzle-orm/pg-core";
export const users = pgTable(
"user",
{
id: text("id").primaryKey(),
name: text("name"),
email: text("email").notNull(),
emailVerified: boolean("email_verified").notNull().default(false),
image: text("image"),
createdAt: timestamp("created_at").notNull().defaultNow(),
updatedAt: timestamp("updated_at").notNull().defaultNow(),
},
(table) => [uniqueIndex("user_email_unique").on(table.email)],
);
export const transaction = pgTable("transaction", {
id: text("id").primaryKey(),
user_id: text("user_id").notNull(),
plaid_id: text("plaid_id").notNull().unique(),
account_id: text("account_id").notNull(),
name: text("name").notNull(),
amount: decimal("amount").notNull(),
datetime: timestamp("datetime"),
authorized_datetime: timestamp("authorized_datetime"),
json: text("json"),
createdAt: timestamp("created_at").notNull().defaultNow(),
updatedAt: timestamp("updated_at").notNull().defaultNow(),
});
export const plaidLink = pgTable("plaidLink", {
id: text("id").primaryKey(),
user_id: text("user_id").notNull(),
link: text("link").notNull(),
token: text("token").notNull(),
completeAt: timestamp("complete_at"),
createdAt: timestamp("created_at").notNull().defaultNow(),
});
export const balance = pgTable("balance", {
id: text("id").primaryKey(),
user_id: text("userId").notNull(),
plaid_id: text("plaidId").notNull().unique(),
avaliable: decimal("avaliable").notNull(),
current: decimal("current").notNull(),
name: text("name").notNull(),
tokenId: text("tokenId").notNull(),
createdAt: timestamp("created_at").notNull().defaultNow(),
updatedAt: timestamp("updated_at").notNull().defaultNow(),
});
export const plaidAccessTokens = pgTable("plaidAccessToken", {
id: text("id").primaryKey(),
name: text("name").notNull(),
logoUrl: text("logoUrl").notNull(),
userId: text("user_id").notNull(),
token: text("token").notNull(),
createdAt: timestamp("created_at").notNull().defaultNow(),
});