aboutsummaryrefslogtreecommitdiff
path: root/packages/db/src/runtime/virtual.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/db/src/runtime/virtual.ts')
-rw-r--r--packages/db/src/runtime/virtual.ts89
1 files changed, 89 insertions, 0 deletions
diff --git a/packages/db/src/runtime/virtual.ts b/packages/db/src/runtime/virtual.ts
new file mode 100644
index 000000000..a44a6ade9
--- /dev/null
+++ b/packages/db/src/runtime/virtual.ts
@@ -0,0 +1,89 @@
+import { sql as _sql } from 'drizzle-orm';
+import type {
+ BooleanColumnInput,
+ ColumnsConfig,
+ DBConfigInput,
+ DateColumnInput,
+ JsonColumnInput,
+ NumberColumnOpts,
+ TableConfig,
+ TextColumnOpts,
+} from '../core/types.js';
+
+function createColumn<S extends string, T extends Record<string, unknown>>(type: S, schema: T) {
+ return {
+ type,
+ /**
+ * @internal
+ */
+ schema,
+ };
+}
+
+export const column = {
+ number: <T extends NumberColumnOpts>(opts: T = {} as T) => {
+ return createColumn('number', opts) satisfies { type: 'number' };
+ },
+ boolean: <T extends BooleanColumnInput['schema']>(opts: T = {} as T) => {
+ return createColumn('boolean', opts) satisfies { type: 'boolean' };
+ },
+ text: <T extends TextColumnOpts>(opts: T = {} as T) => {
+ return createColumn('text', opts) satisfies { type: 'text' };
+ },
+ date<T extends DateColumnInput['schema']>(opts: T = {} as T) {
+ return createColumn('date', opts) satisfies { type: 'date' };
+ },
+ json<T extends JsonColumnInput['schema']>(opts: T = {} as T) {
+ return createColumn('json', opts) satisfies { type: 'json' };
+ },
+};
+
+export function defineTable<TColumns extends ColumnsConfig>(userConfig: TableConfig<TColumns>) {
+ return userConfig;
+}
+
+export function defineDb(userConfig: DBConfigInput) {
+ return userConfig;
+}
+
+// Exports a few common expressions
+export const NOW = _sql`CURRENT_TIMESTAMP`;
+export const TRUE = _sql`TRUE`;
+export const FALSE = _sql`FALSE`;
+
+export {
+ sql,
+ eq,
+ gt,
+ gte,
+ lt,
+ lte,
+ ne,
+ isNull,
+ isNotNull,
+ inArray,
+ notInArray,
+ exists,
+ notExists,
+ between,
+ notBetween,
+ like,
+ ilike,
+ notIlike,
+ not,
+ asc,
+ desc,
+ and,
+ or,
+ count,
+ countDistinct,
+ avg,
+ avgDistinct,
+ sum,
+ sumDistinct,
+ max,
+ min,
+} from 'drizzle-orm';
+
+export { alias } from 'drizzle-orm/sqlite-core';
+export { isDbError } from './utils.js';