From 075f45986fd4d198292226e64afb71b3515576b4 Mon Sep 17 00:00:00 2001 From: Dhravya Date: Sat, 25 May 2024 18:41:26 -0500 Subject: refactored UI, with shared components and UI, better rules and million lint --- apps/web/src/server/auth.ts | 29 -------- apps/web/src/server/db/index.ts | 5 -- apps/web/src/server/db/schema.ts | 143 --------------------------------------- apps/web/src/server/db/test.ts | 6 -- apps/web/src/server/helpers.ts | 39 ----------- 5 files changed, 222 deletions(-) delete mode 100644 apps/web/src/server/auth.ts delete mode 100644 apps/web/src/server/db/index.ts delete mode 100644 apps/web/src/server/db/schema.ts delete mode 100644 apps/web/src/server/db/test.ts delete mode 100644 apps/web/src/server/helpers.ts (limited to 'apps/web/src/server') diff --git a/apps/web/src/server/auth.ts b/apps/web/src/server/auth.ts deleted file mode 100644 index 95edcf35..00000000 --- a/apps/web/src/server/auth.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { env } from "@/env"; -import NextAuth from "next-auth"; -import Google from "next-auth/providers/google"; -import { DrizzleAdapter } from "@auth/drizzle-adapter"; -import { db } from "./db"; - -export const { - handlers: { GET, POST }, - auth, -} = NextAuth({ - secret: env.NEXTAUTH_SECRET, - trustHost: true, - callbacks: { - session: ({ session, token, user }) => ({ - ...session, - user: { - ...session.user, - id: user.id, - }, - }), - }, - adapter: DrizzleAdapter(db), - providers: [ - Google({ - clientId: env.GOOGLE_CLIENT_ID, - clientSecret: env.GOOGLE_CLIENT_SECRET, - }), - ], -}); diff --git a/apps/web/src/server/db/index.ts b/apps/web/src/server/db/index.ts deleted file mode 100644 index 4d671bea..00000000 --- a/apps/web/src/server/db/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { drizzle } from "drizzle-orm/d1"; - -import * as schema from "./schema"; - -export const db = drizzle(process.env.DATABASE, { schema, logger: true }); diff --git a/apps/web/src/server/db/schema.ts b/apps/web/src/server/db/schema.ts deleted file mode 100644 index cd2756f1..00000000 --- a/apps/web/src/server/db/schema.ts +++ /dev/null @@ -1,143 +0,0 @@ -import { relations, sql } from "drizzle-orm"; -import { - index, - int, - primaryKey, - sqliteTableCreator, - text, - integer, - unique, -} from "drizzle-orm/sqlite-core"; - -export const createTable = sqliteTableCreator((name) => `${name}`); - -export const users = createTable("user", { - id: text("id", { length: 255 }).notNull().primaryKey(), - name: text("name", { length: 255 }), - email: text("email", { length: 255 }).notNull(), - emailVerified: int("emailVerified", { mode: "timestamp" }).default( - sql`CURRENT_TIMESTAMP`, - ), - image: text("image", { length: 255 }), -}); - -export type User = typeof users.$inferSelect; - -export const usersRelations = relations(users, ({ many }) => ({ - accounts: many(accounts), - sessions: many(sessions), -})); - -export const accounts = createTable( - "account", - { - id: integer("id").notNull().primaryKey({ autoIncrement: true }), - userId: text("userId", { length: 255 }) - .notNull() - .references(() => users.id, { onDelete: "cascade" }), - type: text("type", { length: 255 }).notNull(), - provider: text("provider", { length: 255 }).notNull(), - providerAccountId: text("providerAccountId", { length: 255 }).notNull(), - refresh_token: text("refresh_token"), - access_token: text("access_token"), - expires_at: int("expires_at"), - token_type: text("token_type", { length: 255 }), - scope: text("scope", { length: 255 }), - id_token: text("id_token"), - session_state: text("session_state", { length: 255 }), - oauth_token_secret: text("oauth_token_secret"), - oauth_token: text("oauth_token"), - }, - (account) => ({ - userIdIdx: index("account_userId_idx").on(account.userId), - }), -); - -export const sessions = createTable( - "session", - { - id: integer("id").notNull().primaryKey({ autoIncrement: true }), - sessionToken: text("sessionToken", { length: 255 }).notNull(), - userId: text("userId", { length: 255 }) - .notNull() - .references(() => users.id, { onDelete: "cascade" }), - expires: int("expires", { mode: "timestamp" }).notNull(), - }, - (session) => ({ - userIdIdx: index("session_userId_idx").on(session.userId), - }), -); - -export const verificationTokens = createTable( - "verificationToken", - { - identifier: text("identifier", { length: 255 }).notNull(), - token: text("token", { length: 255 }).notNull(), - expires: int("expires", { mode: "timestamp" }).notNull(), - }, - (vt) => ({ - compoundKey: primaryKey({ columns: [vt.identifier, vt.token] }), - }), -); - -export const storedContent = createTable( - "storedContent", - { - id: integer("id").notNull().primaryKey({ autoIncrement: true }), - content: text("content").notNull(), - title: text("title", { length: 255 }), - description: text("description", { length: 255 }), - url: text("url").notNull(), - savedAt: int("savedAt", { mode: "timestamp" }).notNull(), - baseUrl: text("baseUrl", { length: 255 }), - type: text("type", { enum: ["note", "page", "twitter-bookmark"] }).default( - "page", - ), - image: text("image", { length: 255 }), - user: text("user", { length: 255 }).references(() => users.id, { - onDelete: "cascade", - }), - }, - (sc) => ({ - urlIdx: index("storedContent_url_idx").on(sc.url), - savedAtIdx: index("storedContent_savedAt_idx").on(sc.savedAt), - titleInx: index("storedContent_title_idx").on(sc.title), - userIdx: index("storedContent_user_idx").on(sc.user), - }), -); - -export const contentToSpace = createTable( - "contentToSpace", - { - contentId: integer("contentId") - .notNull() - .references(() => storedContent.id, { onDelete: "cascade" }), - spaceId: integer("spaceId") - .notNull() - .references(() => space.id, { onDelete: "cascade" }), - }, - (cts) => ({ - compoundKey: primaryKey({ columns: [cts.contentId, cts.spaceId] }), - }), -); - -export const space = createTable( - "space", - { - id: integer("id").notNull().primaryKey({ autoIncrement: true }), - name: text("name").notNull().unique().default("none"), - user: text("user", { length: 255 }).references(() => users.id, { - onDelete: "cascade", - }), - }, - (space) => ({ - nameIdx: index("spaces_name_idx").on(space.name), - userIdx: index("spaces_user_idx").on(space.user), - }), -); - -export type StoredContent = Omit; -export type StoredSpace = typeof space.$inferSelect; -export type ChachedSpaceContent = StoredContent & { - space: number; -}; diff --git a/apps/web/src/server/db/test.ts b/apps/web/src/server/db/test.ts deleted file mode 100644 index 37969e5e..00000000 --- a/apps/web/src/server/db/test.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { db } from "."; -import { space, user } from "./schema"; - -const user = await db.select(user).all(); - -await db.insert(space).values([{}]); diff --git a/apps/web/src/server/helpers.ts b/apps/web/src/server/helpers.ts deleted file mode 100644 index 9a9a9607..00000000 --- a/apps/web/src/server/helpers.ts +++ /dev/null @@ -1,39 +0,0 @@ -"use server"; -import * as cheerio from "cheerio"; - -export async function getMetaData(url: string) { - const response = await fetch(url); - const html = await response.text(); - - const $ = cheerio.load(html); - - // Extract the base URL - const baseUrl = new URL(url).origin; - - // Extract title - const title = $("title").text().trim(); - - const description = $("meta[name=description]").attr("content") ?? ""; - - const _favicon = - $("link[rel=icon]").attr("href") ?? "https://supermemory.dhr.wtf/web.svg"; - - let favicon = - _favicon.trim().length > 0 - ? _favicon.trim() - : "https://supermemory.dhr.wtf/web.svg"; - if (favicon.startsWith("/")) { - favicon = baseUrl + favicon; - } else if (favicon.startsWith("./")) { - favicon = baseUrl + favicon.slice(1); - } - - // Prepare the metadata object - const metadata = { - title, - description, - image: favicon, - baseUrl, - }; - return metadata; -} -- cgit v1.2.3