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:
@@ -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 };
|
||||
Reference in New Issue
Block a user