This commit is contained in:
Omer Sabic 2024-06-07 14:31:46 +02:00
parent c333b9aaec
commit 9ebaece0a2
3 changed files with 10 additions and 117 deletions

View File

@ -21,14 +21,14 @@ export const initDb = async () => {
schema, schema,
}); });
await migrate(db, { // await migrate(db, {
migrationsFolder: "./src/db/migrations", // migrationsFolder: "./src/db/migrations",
}) // })
.then(() => { // .then(() => {
Logger.info("INIT", "Migrated database"); // Logger.info("INIT", "Migrated database");
}) // })
.catch((error) => { // .catch((error) => {
Logger.error("INIT", `Failed to migrate database ${String(error)}`); // Logger.error("INIT", `Failed to migrate database ${String(error)}`);
throw new Error(`Failed to migrate database ${String(error)}`); // throw new Error(`Failed to migrate database ${String(error)}`);
}); // });
}; };

View File

@ -1,37 +0,0 @@
import { relations } from "drizzle-orm/relations";
import { sites, signups, users, sessions, articles } from "./schema";
export const signupsRelations = relations(signups, ({one}) => ({
site: one(sites, {
fields: [signups.site_id],
references: [sites.id]
}),
}));
export const sitesRelations = relations(sites, ({one, many}) => ({
signups: many(signups),
user: one(users, {
fields: [sites.user_id],
references: [users.id]
}),
articles: many(articles),
}));
export const usersRelations = relations(users, ({many}) => ({
sites: many(sites),
sessions: many(sessions),
}));
export const sessionsRelations = relations(sessions, ({one}) => ({
user: one(users, {
fields: [sessions.user_id],
references: [users.id]
}),
}));
export const articlesRelations = relations(articles, ({one}) => ({
site: one(sites, {
fields: [articles.site_id],
references: [sites.id]
}),
}));

View File

@ -1,70 +0,0 @@
import { pgTable, foreignKey, pgEnum, text, uuid, timestamp, integer, varchar, boolean, jsonb } from "drizzle-orm/pg-core"
import { sql } from "drizzle-orm"
export const subscription_tier = pgEnum("subscription_tier", ['free', 'basic', 'pro', 'enterprise'])
export const signups = pgTable("signups", {
email: text("email").notNull(),
site_id: uuid("site_id").notNull().references(() => sites.id),
created_at: timestamp("created_at", { mode: 'string' }).defaultNow().notNull(),
source: text("source"),
});
export const users = pgTable("users", {
id: uuid("id").defaultRandom().primaryKey().notNull(),
name: text("name"),
email: text("email"),
channel_id: text("channel_id"),
google_id: text("google_id"),
uploads_playlist_id: text("uploads_playlist_id"),
subscription_tier: subscription_tier("subscription_tier").default('free').notNull(),
tokens: integer("tokens").default(0).notNull(),
stripe_id: text("stripe_id"),
});
export const sites = pgTable("sites", {
id: uuid("id").defaultRandom().primaryKey().notNull(),
user_id: uuid("user_id").references(() => users.id),
name: text("name"),
primary_color_hex: varchar("primary_color_hex", { length: 6 }).default('c4ced4'::character varying).notNull(),
secondary_color_hex: varchar("secondary_color_hex", { length: 6 }).default('27251f'::character varying).notNull(),
text_color_hex: varchar("text_color_hex", { length: 6 }).default('ffffff'::character varying).notNull(),
title: text("title").default('The best blog in the world!'),
subtitle: text("subtitle").default('Some extra info about the best blog in the world!'),
domain: text("domain"),
send_freebie: boolean("send_freebie").default(false),
freebie_name: text("freebie_name").default(''),
freebie_url: text("freebie_url").default(''),
freebie_text: text("freebie_text").default(''),
freebie_image_url: text("freebie_image_url").default(''),
subdomain_slug: text("subdomain_slug"),
social_medias: jsonb("social_medias"),
});
export const sessions = pgTable("sessions", {
id: uuid("id").defaultRandom().primaryKey().notNull(),
user_id: uuid("user_id").references(() => users.id),
google_access_token: text("google_access_token"),
google_refresh_token: text("google_refresh_token"),
expires_at: timestamp("expires_at", { mode: 'string' }),
});
export const articles = pgTable("articles", {
id: uuid("id").defaultRandom().primaryKey().notNull(),
site_id: uuid("site_id").references(() => sites.id),
content: text("content"),
source_video_id: text("source_video_id"),
title: text("title"),
seo_slug: text("seo_slug"),
created_at: timestamp("created_at", { mode: 'string' }).defaultNow(),
is_public: boolean("is_public").default(false),
views: integer("views").default(0),
seo_title: text("seo_title"),
seo_description: text("seo_description"),
excerp: text("excerp"),
});
export const waitlist = pgTable("waitlist", {
email: text("email"),
});