refactor: reinstate drizzle

This commit is contained in:
Henry
2025-04-23 13:11:00 +01:00
parent 0c25fe3864
commit c1348cf455
22 changed files with 1964 additions and 879 deletions

View File

@@ -57,18 +57,11 @@ export const cardRouter = createTRPCRouter({
let index = 0;
if (list.cards.length) {
if (input.position === "end" && lastCard) index = lastCard.index + 1;
if (input.position === "start") {
await cardRepo.pushIndex(ctx.db, {
listId: list.id,
cardIndex: 0,
});
}
if (list.cards.length && input.position === "end" && lastCard) {
index = lastCard.index + 1;
}
const newCard = await cardRepo.create(ctx.db, {
const newCard = await cardRepo.create(ctx.drizzleDb, {
title: input.title,
description: input.description,
createdBy: userId,
@@ -76,7 +69,7 @@ export const cardRouter = createTRPCRouter({
index,
});
const newCardId = newCard?.id;
const newCardId = newCard.id;
if (!newCardId)
throw new TRPCError({
@@ -84,12 +77,6 @@ export const cardRouter = createTRPCRouter({
code: "INTERNAL_SERVER_ERROR",
});
await cardActivityRepo.create(ctx.db, {
type: "card.created",
cardId: newCard.id,
createdBy: userId,
});
if (newCardId && input.labelPublicIds.length) {
const labels = await labelRepo.getAllByPublicIds(
ctx.db,

View File

@@ -24,7 +24,7 @@ export const feedbackRouter = createTRPCRouter({
code: "UNAUTHORIZED",
});
const result = await feedbackRepo.create(ctx.adminDb, {
const result = await feedbackRepo.create(ctx.db, {
feedback: input.feedback,
createdBy: userId,
url: input.url,

View File

@@ -73,12 +73,12 @@ export const memberRouter = createTRPCRouter({
let hashedToken: string | undefined;
let verificationType: string | undefined;
const existingUser = await userRepo.getByEmail(ctx.adminDb, input.email);
const existingUser = await userRepo.getByEmail(ctx.db, input.email);
if (existingUser) {
invitedUserId = existingUser.id;
const magicLink = await ctx.adminDb.auth.admin.generateLink({
const magicLink = await ctx.db.auth.admin.generateLink({
type: "magiclink",
email: input.email,
options: {
@@ -89,7 +89,7 @@ export const memberRouter = createTRPCRouter({
hashedToken = magicLink.data.properties?.hashed_token;
verificationType = magicLink.data.properties?.verification_type;
} else {
const invite = await ctx.adminDb.auth.admin.generateLink({
const invite = await ctx.db.auth.admin.generateLink({
type: "invite",
email: input.email,
options: {
@@ -111,7 +111,7 @@ export const memberRouter = createTRPCRouter({
},
});
const newUser = await userRepo.create(ctx.adminDb, {
const newUser = await userRepo.create(ctx.db, {
email: invitedUserEmail,
id: invitedUserAuthId,
stripeCustomerId: stripeCustomer.id,

View File

@@ -37,7 +37,7 @@ export const userRouter = createTRPCRouter({
code: "UNAUTHORIZED",
});
const result = await userRepo.getById(ctx.db, userId);
const result = await userRepo.getById(ctx.drizzleDb, userId);
if (!result?.name) {
throw new TRPCError({
@@ -81,7 +81,7 @@ export const userRouter = createTRPCRouter({
code: "UNAUTHORIZED",
});
const result = await userRepo.update(ctx.adminDb, userId, input);
const result = await userRepo.update(ctx.db, userId, input);
if (!result) {
throw new TRPCError({

View File

@@ -126,7 +126,7 @@ export const workspaceRouter = createTRPCRouter({
const workspacePublicId = generateUID();
const result = await workspaceRepo.create(ctx.adminDb, {
const result = await workspaceRepo.create(ctx.db, {
publicId: workspacePublicId,
name: input.name,
slug: workspacePublicId,
@@ -174,7 +174,7 @@ export const workspaceRouter = createTRPCRouter({
);
const reservedOrPremiumWorkspaceSlug =
await workspaceSlugRepo.getWorkspaceSlug(ctx.adminDb, input.slug);
await workspaceSlugRepo.getWorkspaceSlug(ctx.db, input.slug);
const isWorkspaceSlugAvailable =
await workspaceRepo.isWorkspaceSlugAvailable(ctx.db, input.slug);
@@ -261,7 +261,7 @@ export const workspaceRouter = createTRPCRouter({
const slug = input.workspaceSlug.toLowerCase();
// check slug is not reserved
const workspaceSlug = await workspaceSlugRepo.getWorkspaceSlug(
ctx.adminDb,
ctx.db,
slug,
);

View File

@@ -1,20 +1,15 @@
// import type { Pool } from "@neondatabase/serverless";
import type { FetchCreateContextFnOptions } from "@trpc/server/adapters/fetch";
import type { CreateNextContextOptions } from "@trpc/server/adapters/next";
// import type { NeonDatabase as DrizzleClient } from "drizzle-orm/neon-serverless";
import type { OpenApiMeta } from "trpc-to-openapi";
import { initTRPC, TRPCError } from "@trpc/server";
import superjson from "superjson";
import { ZodError } from "zod";
import type { dbClient } from "@kan/db/client";
import type { Database } from "@kan/db/types/database.types";
import type { SupabaseClient } from "@kan/supabase";
// import { createDrizzleClient } from "@kan/db/client";
import {
createNextApiClient,
createTRPCAdminClient,
createTRPCClient,
} from "@kan/supabase";
import { createDrizzleClient } from "@kan/db/client";
import { createNextApiClient, createTRPCClient } from "@kan/supabase";
export interface User {
id: string;
@@ -23,22 +18,14 @@ export interface User {
interface CreateContextOptions {
user: User | null;
db: SupabaseClient<Database>;
adminDb: SupabaseClient<Database>;
// drizzleDb:
// | (DrizzleClient<
// typeof import("/Users/henryball/kan/packages/db/dist/schema")
// > & {
// $client: Pool;
// })
// | null;
drizzleDb: dbClient;
}
export const createInnerTRPCContext = (opts: CreateContextOptions) => {
return {
user: opts.user,
db: opts.db,
adminDb: opts.adminDb,
// drizzleDb: opts.drizzleDb,
drizzleDb: opts.drizzleDb,
};
};
@@ -47,37 +34,35 @@ export const createTRPCContext = async ({
resHeaders,
}: FetchCreateContextFnOptions) => {
const db = createTRPCClient(req, resHeaders);
const adminDb = createTRPCAdminClient();
const {
data: { user },
} = await db.auth.getUser();
// const drizzleDb = createDrizzleClient();
const drizzleDb = createDrizzleClient();
return createInnerTRPCContext({ db, adminDb, user });
return createInnerTRPCContext({ db, user, drizzleDb });
};
export const createRESTContext = async ({ req }: CreateNextContextOptions) => {
const db = createNextApiClient(req);
const adminDb = createTRPCAdminClient();
const authHeader = req.headers.authorization;
const accessToken = authHeader?.startsWith("Bearer ")
? authHeader.substring(7)
: null;
const drizzleDb = createDrizzleClient();
if (!accessToken) {
return createInnerTRPCContext({ db, adminDb, user: null });
return createInnerTRPCContext({ db, user: null, drizzleDb });
}
const {
data: { user },
} = await db.auth.getUser(accessToken);
// const drizzleDb = createDrizzleClient();
return createInnerTRPCContext({ db, adminDb, user });
return createInnerTRPCContext({ db, user, drizzleDb });
};
const t = initTRPC