feat: setup drizzle (#594)

* chore: migration to SvelteKit 2

* stage 1: migrate to svelte 5 and fix rerendering issues

* stage 2: fix more $: reactivity across dashboard

* fix merge conflicts

* chore: migrate code in main to svelte 5

* chore: update preventDefault

* chore: simplify tsconfig and remove unused mobileMenuRef in MobileMenu.svelte

* chore: enforce .ts across dashboard

* rename from classroomio-com to website

* stage-3: Replace carbon icon svelte with lucide icon

* update lock file

* chore: finish icon replacement

* fix: settings and setup page multiple rerender

* stage 3: More icon and rerendering fixes

* feat: setup drizzle and better auth

* fix: onboarding validation error showing translation key #586 (#593)

* fix: onboarding validation error showing translation key #586

* fix: remove debug log for profile update errors

* chore: add a clean command

* fix: remove message from email verification response
This commit is contained in:
Rotimi Best
2025-11-01 15:49:29 +01:00
committed by GitHub
parent 97fb446df5
commit b96d91cd7c
801 changed files with 22279 additions and 10834 deletions
+60
View File
@@ -0,0 +1,60 @@
import 'dotenv/config';
import * as schema from './schema';
import { SQL, sql } from 'drizzle-orm';
import { drizzle } from 'drizzle-orm/node-postgres';
const connectionString = process.env.DATABASE_URL ?? process.env.PRIVATE_DATABASE_URL ?? '';
export const db = drizzle(connectionString, {
schema
});
export * from 'drizzle-orm';
export * from './schema';
/**
* Creates a SQL expression that returns the length of a JSON array column
*
* @param column The column containing the JSON array
* @returns A SQL expression that can be used in where clauses
*/
function jsonArrayLength(column: any) {
// Create a SQL expression using Drizzle's sql template literal
const sqlExpression = sql`jsonb_array_length(${column})`;
// Return an object with utility methods for comparison operations
return {
// Check if array length equals a specific value
equals: (length: number): SQL<unknown> => {
return sql`${sqlExpression} = ${length}`;
},
// Check if array length is greater than a specific value
gt: (length: number): SQL<unknown> => {
return sql`${sqlExpression} > ${length}`;
},
// Check if array length is less than a specific value
lt: (length: number): SQL<unknown> => {
return sql`${sqlExpression} < ${length}`;
},
// Check if array length is greater than or equal to a specific value
gte: (length: number): SQL<unknown> => {
return sql`${sqlExpression} >= ${length}`;
},
// Check if array length is less than or equal to a specific value
lte: (length: number): SQL<unknown> => {
return sql`${sqlExpression} <= ${length}`;
}
};
}
const explainAnalyze = async (d: typeof db, query: any) => {
console.log(query.sql);
const debugResult = await d.execute(sql`EXPLAIN ANALYZE ${query}`);
console.debug(debugResult);
return query;
};
export { explainAnalyze, jsonArrayLength };