@ailnaf/zoddb 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/CHANGELOG.md +73 -0
  2. package/LICENSE +15 -0
  3. package/README.md +440 -2
  4. package/dist/aggregate.d.ts +42 -0
  5. package/dist/aggregate.d.ts.map +1 -0
  6. package/dist/aggregate.js +77 -0
  7. package/dist/aggregate.js.map +1 -0
  8. package/dist/auth-schema.d.ts +26 -0
  9. package/dist/auth-schema.d.ts.map +1 -0
  10. package/dist/auth-schema.js +139 -0
  11. package/dist/auth-schema.js.map +1 -0
  12. package/dist/better-auth-adapter.d.ts +21 -0
  13. package/dist/better-auth-adapter.d.ts.map +1 -0
  14. package/dist/better-auth-adapter.js +175 -0
  15. package/dist/better-auth-adapter.js.map +1 -0
  16. package/dist/cli.d.ts +3 -0
  17. package/dist/cli.d.ts.map +1 -0
  18. package/dist/cli.js +341 -0
  19. package/dist/cli.js.map +1 -0
  20. package/dist/config.d.ts +22 -0
  21. package/dist/config.d.ts.map +1 -0
  22. package/dist/config.js +52 -0
  23. package/dist/config.js.map +1 -0
  24. package/dist/db.d.ts +183 -0
  25. package/dist/db.d.ts.map +1 -0
  26. package/dist/db.js +1063 -0
  27. package/dist/db.js.map +1 -0
  28. package/dist/ddl.d.ts +21 -0
  29. package/dist/ddl.d.ts.map +1 -0
  30. package/dist/ddl.js +127 -0
  31. package/dist/ddl.js.map +1 -0
  32. package/dist/dev.d.ts +9 -0
  33. package/dist/dev.d.ts.map +1 -0
  34. package/dist/dev.js +21 -0
  35. package/dist/dev.js.map +1 -0
  36. package/dist/errors.d.ts +63 -0
  37. package/dist/errors.d.ts.map +1 -0
  38. package/dist/errors.js +122 -0
  39. package/dist/errors.js.map +1 -0
  40. package/dist/filter.d.ts +67 -0
  41. package/dist/filter.d.ts.map +1 -0
  42. package/dist/filter.js +230 -0
  43. package/dist/filter.js.map +1 -0
  44. package/dist/graph.d.ts +54 -0
  45. package/dist/graph.d.ts.map +1 -0
  46. package/dist/graph.js +52 -0
  47. package/dist/graph.js.map +1 -0
  48. package/dist/index.d.ts +8 -0
  49. package/dist/index.d.ts.map +1 -0
  50. package/dist/index.js +6 -0
  51. package/dist/index.js.map +1 -0
  52. package/dist/init.d.ts +12 -0
  53. package/dist/init.d.ts.map +1 -0
  54. package/dist/init.js +62 -0
  55. package/dist/init.js.map +1 -0
  56. package/dist/migrate.d.ts +58 -0
  57. package/dist/migrate.d.ts.map +1 -0
  58. package/dist/migrate.js +447 -0
  59. package/dist/migrate.js.map +1 -0
  60. package/dist/migrations.d.ts +80 -0
  61. package/dist/migrations.d.ts.map +1 -0
  62. package/dist/migrations.js +281 -0
  63. package/dist/migrations.js.map +1 -0
  64. package/dist/relation-graph.d.ts +50 -0
  65. package/dist/relation-graph.d.ts.map +1 -0
  66. package/dist/relation-graph.js +93 -0
  67. package/dist/relation-graph.js.map +1 -0
  68. package/dist/relations.d.ts +128 -0
  69. package/dist/relations.d.ts.map +1 -0
  70. package/dist/relations.js +21 -0
  71. package/dist/relations.js.map +1 -0
  72. package/dist/schema.d.ts +247 -0
  73. package/dist/schema.d.ts.map +1 -0
  74. package/dist/schema.js +584 -0
  75. package/dist/schema.js.map +1 -0
  76. package/dist/studio/page.d.ts +3 -0
  77. package/dist/studio/page.d.ts.map +1 -0
  78. package/dist/studio/page.js +708 -0
  79. package/dist/studio/page.js.map +1 -0
  80. package/dist/studio/server.d.ts +26 -0
  81. package/dist/studio/server.d.ts.map +1 -0
  82. package/dist/studio/server.js +415 -0
  83. package/dist/studio/server.js.map +1 -0
  84. package/dist/table.d.ts +156 -0
  85. package/dist/table.d.ts.map +1 -0
  86. package/dist/table.js +165 -0
  87. package/dist/table.js.map +1 -0
  88. package/dist/where.d.ts +18 -0
  89. package/dist/where.d.ts.map +1 -0
  90. package/dist/where.js +76 -0
  91. package/dist/where.js.map +1 -0
  92. package/docs/api.md +476 -0
  93. package/package.json +70 -4
@@ -0,0 +1,26 @@
1
+ import { z } from 'zod';
2
+ import type { BetterAuthOptions } from 'better-auth';
3
+ import { type GraphNode, type ZodRelationSpec, type ZodTableOptions } from './schema.js';
4
+ /** 只取 getAuthTables 需要的 auth 配置;不含 secret/baseURL 等运行时选项 */
5
+ export type AuthSchemaOptions = Pick<BetterAuthOptions, 'plugins' | 'user' | 'session' | 'account' | 'verification' | 'rateLimit' | 'secondaryStorage'>;
6
+ export interface AuthSchemaResult {
7
+ /** key = better-auth model key;value = zod 对象 */
8
+ tables: Record<string, z.ZodObject<any>>;
9
+ /** 可直接展开给 defineSchema 的表级配置 */
10
+ options: Record<string, ZodTableOptions>;
11
+ /** 可直接展开给 defineSchema 的 node() 输入;core 四表是 auth graph 的稳定锚点 */
12
+ nodes: Record<string, GraphNode> & {
13
+ user: GraphNode;
14
+ session: GraphNode;
15
+ account: GraphNode;
16
+ verification: GraphNode;
17
+ };
18
+ /** 可直接展开给 defineSchema 的 edges 输入 */
19
+ edges: Record<string, Record<string, ZodRelationSpec>>;
20
+ }
21
+ /**
22
+ * 从 better-auth 的运行时表元数据生成 zod 表。
23
+ * 不复制各插件 schema;插件新增字段由 getAuthTables 自动带出。
24
+ */
25
+ export declare function authSchema(opts?: AuthSchemaOptions): AuthSchemaResult;
26
+ //# sourceMappingURL=auth-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-schema.d.ts","sourceRoot":"","sources":["../src/auth-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEpD,OAAO,EAAQ,KAAK,SAAS,EAAE,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAA;AAE9F,4DAA4D;AAC5D,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,iBAAiB,EACjB,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,cAAc,GAAG,WAAW,GAAG,kBAAkB,CAC/F,CAAA;AAED,MAAM,WAAW,gBAAgB;IAC/B,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;IACxC,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACxC,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG;QACjC,IAAI,EAAE,SAAS,CAAA;QACf,OAAO,EAAE,SAAS,CAAA;QAClB,OAAO,EAAE,SAAS,CAAA;QAClB,YAAY,EAAE,SAAS,CAAA;KACxB,CAAA;IACD,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAA;CACvD;AAkDD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,GAAE,iBAAsB,GAAG,gBAAgB,CAyHzE"}
@@ -0,0 +1,139 @@
1
+ import { z } from 'zod';
2
+ import { getAuthTables } from 'better-auth/db';
3
+ import { sql } from './table.js';
4
+ import { node } from './schema.js';
5
+ const isFunction = (v) => typeof v === 'function';
6
+ const fieldOutKey = (field, logicalKey) => field.fieldName ?? logicalKey;
7
+ const zodForField = (field) => {
8
+ const type = field.type;
9
+ if (type === 'string')
10
+ return z.string();
11
+ if (type === 'string[]')
12
+ return z.array(z.string());
13
+ if (type === 'number') {
14
+ return field.bigint
15
+ ? z.number().meta({ sqlType: 'int8' })
16
+ : z.number();
17
+ }
18
+ if (type === 'number[]')
19
+ return z.array(z.number());
20
+ if (type === 'boolean')
21
+ return z.boolean();
22
+ if (type === 'date')
23
+ return z.date();
24
+ if (type === 'json')
25
+ return z.any().meta({ sqlType: 'jsonb' });
26
+ if (Array.isArray(type))
27
+ return z.array(z.string());
28
+ throw new Error(`authSchema: 不支持的 better-auth 字段类型 ${String(type)}`);
29
+ };
30
+ /**
31
+ * 从 better-auth 的运行时表元数据生成 zod 表。
32
+ * 不复制各插件 schema;插件新增字段由 getAuthTables 自动带出。
33
+ */
34
+ export function authSchema(opts = {}) {
35
+ const authTables = getAuthTables(opts);
36
+ const tables = {};
37
+ const options = {};
38
+ const nodes = {};
39
+ const edges = {};
40
+ // first pass: tables + fields
41
+ for (const [key, table] of Object.entries(authTables)) {
42
+ const shape = {
43
+ id: z.string(),
44
+ };
45
+ const tableOptions = {
46
+ name: table.modelName,
47
+ primaryKey: 'id',
48
+ indexes: [],
49
+ defaults: {},
50
+ relations: {},
51
+ };
52
+ const defaults = tableOptions.defaults;
53
+ const indexes = tableOptions.indexes;
54
+ const relations = tableOptions.relations;
55
+ for (const [logicalKey, field] of Object.entries(table.fields)) {
56
+ const outKey = fieldOutKey(field, logicalKey);
57
+ if (outKey === 'id') {
58
+ throw new Error(`authSchema: ${key}.${logicalKey} 与自动生成的 id 冲突`);
59
+ }
60
+ if (outKey in shape) {
61
+ throw new Error(`authSchema: ${key} 的字段名 "${outKey}" 冲突`);
62
+ }
63
+ let base = zodForField(field);
64
+ const staticDefault = field.defaultValue !== undefined && !isFunction(field.defaultValue);
65
+ if (field.required === false) {
66
+ base = staticDefault ? base.default(field.defaultValue) : base.nullable();
67
+ }
68
+ else if (staticDefault) {
69
+ base = base.default(field.defaultValue);
70
+ }
71
+ shape[outKey] = base;
72
+ if (field.unique) {
73
+ // 用列 meta 产生单列唯一约束
74
+ shape[outKey] = shape[outKey].meta({ unique: true });
75
+ }
76
+ else if (field.index) {
77
+ indexes.push({ columns: [outKey] });
78
+ }
79
+ if (staticDefault) {
80
+ defaults[outKey] = field.defaultValue;
81
+ }
82
+ else if (field.type === 'date' && isFunction(field.defaultValue) &&
83
+ (outKey === 'createdAt' || outKey === 'updatedAt')) {
84
+ // better-auth 的默认值是 app 函数;zero-SQL 下用 DB now() 承接
85
+ defaults[outKey] = sql `now()`;
86
+ }
87
+ if (field.references) {
88
+ const targetTable = authTables[field.references.model];
89
+ if (!targetTable) {
90
+ throw new Error(`authSchema: ${key}.${outKey} 引用了未知模型 "${field.references.model}"`);
91
+ }
92
+ const targetField = targetTable.fields[field.references.field];
93
+ const targetOut = field.references.field === 'id'
94
+ ? 'id'
95
+ : targetField
96
+ ? fieldOutKey(targetField, field.references.field)
97
+ : undefined;
98
+ if (!targetOut) {
99
+ throw new Error(`authSchema: ${key}.${outKey} 引用了未知字段 "${field.references.model}.${field.references.field}"`);
100
+ }
101
+ const relName = outKey.replace(/Id$/, '') || field.references.model;
102
+ if (relations[relName]) {
103
+ throw new Error(`authSchema: ${key} 的关系名 "${relName}" 冲突`);
104
+ }
105
+ relations[relName] = {
106
+ from: outKey,
107
+ to: `${field.references.model}.${targetOut}`,
108
+ kind: 'one',
109
+ ...(field.references.onDelete ? { onDelete: field.references.onDelete } : {}),
110
+ };
111
+ }
112
+ }
113
+ for (const idx of table.indexes ?? []) {
114
+ const columns = idx.fields.map(f => {
115
+ const field = table.fields[f];
116
+ if (!field)
117
+ throw new Error(`authSchema: ${key} 的索引引用了未知字段 "${f}"`);
118
+ return fieldOutKey(field, f);
119
+ });
120
+ indexes.push({ columns, ...(idx.name ? { name: idx.name } : {}), unique: idx.unique === true });
121
+ }
122
+ // better-auth OAuth 账户的核心约束不总是出现在 getAuthTables 元数据里。
123
+ // 手写 auth 表的等价行为:同一 provider 下 accountId 唯一。
124
+ if (key === 'account' && table.fields.providerId && table.fields.accountId) {
125
+ tableOptions.unique = [[
126
+ fieldOutKey(table.fields.providerId, 'providerId'),
127
+ fieldOutKey(table.fields.accountId, 'accountId'),
128
+ ]];
129
+ }
130
+ tables[key] = z.object(shape);
131
+ options[key] = tableOptions;
132
+ const { relations: _relations, ...nodeOptions } = tableOptions;
133
+ nodes[key] = node(tables[key], nodeOptions);
134
+ if (Object.keys(relations).length > 0)
135
+ edges[key] = relations;
136
+ }
137
+ return { tables, options, nodes, edges };
138
+ }
139
+ //# sourceMappingURL=auth-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-schema.js","sourceRoot":"","sources":["../src/auth-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { BetterAuthOptions } from 'better-auth';
2
+ import { type DBAdapter } from 'better-auth/adapters';
3
+ import type { Db } from './db.js';
4
+ import type { Table } from './table.js';
5
+ import type { SchemaDb, SchemaDefinition } from './schema.js';
6
+ export type ZodDbAdapterMethod = 'create' | 'findOne' | 'findMany' | 'count' | 'update' | 'updateMany' | 'delete' | 'deleteMany' | 'transaction';
7
+ export interface ZodDbAdapterOptions {
8
+ /** better-auth 模型名(getModelName 之后)→ zoddb 表 */
9
+ tables?: Record<string, Table>;
10
+ /** 从 defineSchema() 的 schema 自动取表;tables 可覆盖 */
11
+ schema?: SchemaDefinition;
12
+ usePlural?: boolean;
13
+ debugLogs?: boolean;
14
+ transaction?: boolean;
15
+ /** 可观测钩子:每个操作进入时回调(测试断言"方法是否真被下游调用") */
16
+ onMethod?: (method: ZodDbAdapterMethod) => void;
17
+ }
18
+ export declare const zodDbAdapter: (input: Db | SchemaDb<SchemaDefinition>, options: ZodDbAdapterOptions) => (authOptions: BetterAuthOptions) => DBAdapter;
19
+ export { authSchema } from './auth-schema.js';
20
+ export type { AuthSchemaOptions, AuthSchemaResult } from './auth-schema.js';
21
+ //# sourceMappingURL=better-auth-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"better-auth-adapter.d.ts","sourceRoot":"","sources":["../src/better-auth-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAIL,KAAK,SAAS,EAEf,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,EAAE,EAAuB,MAAM,SAAS,CAAA;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAG7D,MAAM,MAAM,kBAAkB,GAC1B,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAC3C,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,YAAY,GAAG,aAAa,CAAA;AAErE,MAAM,WAAW,mBAAmB;IAClC,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC9B,gDAAgD;IAChD,MAAM,CAAC,EAAE,gBAAgB,CAAA;IACzB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAA;CAChD;AAMD,eAAO,MAAM,YAAY,UAAW,EAAE,GAAG,QAAQ,CAAC,gBAAgB,CAAC,WAAW,mBAAmB,mBAmM1E,iBAAiB,KAAG,SAI1C,CAAA;AAED,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA"}
@@ -0,0 +1,175 @@
1
+ import { createAdapterFactory, } from 'better-auth/adapters';
2
+ import { compileWhere } from './where.js';
3
+ const quoteIdent = (s) => `"${s.replace(/"/g, '""')}"`;
4
+ export const zodDbAdapter = (input, options) => {
5
+ let lazyOptions = null;
6
+ const db = input.db ?? input;
7
+ const schemaTables = options.tables
8
+ ?? options.schema?.tables
9
+ ?? input.schema?.tables;
10
+ if (!schemaTables)
11
+ throw new Error('zodDbAdapter: 需要 tables 或 schema');
12
+ const tableMap = schemaTables;
13
+ const tableOf = (model) => {
14
+ const t = tableMap[model];
15
+ if (!t) {
16
+ throw new Error(`zodDbAdapter: 未知模型 "${model}"。已注册: ${Object.keys(tableMap).join(', ')}`);
17
+ }
18
+ return t;
19
+ };
20
+ const columnOf = (table, field) => {
21
+ const plan = table.__plan.find(p => p.outKey === field);
22
+ if (!plan)
23
+ throw new Error(`zodDbAdapter: 表 "${table.name}" 没有字段 "${field}"`);
24
+ return plan.dbKey;
25
+ };
26
+ const selectOf = (conn, table, select) => {
27
+ const fields = select?.filter(f => table.__plan.some(p => p.outKey === f));
28
+ if (!fields || fields.length === 0)
29
+ return conn.select(table);
30
+ return conn.select(table, Object.fromEntries(fields.map(f => [f, true])));
31
+ };
32
+ const makeAdapter = (conn) => ({ getModelName }) => {
33
+ const readRows = async (text, params, sel) => {
34
+ const rows = await conn.raw.unsafe(text, params);
35
+ return rows.map((row, i) => sel.__mapValid(row, i));
36
+ };
37
+ const rec = (m) => options.onMethod?.(m);
38
+ const whereOf = (table, where) => compileWhere(where, f => columnOf(table, f));
39
+ const findOneImpl = async (args) => {
40
+ rec('findOne');
41
+ if (args.join)
42
+ throw new Error('zodDbAdapter: join 暂不支持(better-auth 会在缺少 join 时退回多次查询)');
43
+ const table = tableOf(getModelName(args.model));
44
+ const sel = selectOf(conn, table, args.select);
45
+ const w = whereOf(table, args.where);
46
+ const text = `select ${sel.toSQL()} from ${quoteIdent(table.name)}`
47
+ + (w.text ? ` where ${w.text}` : '') + ' limit 1';
48
+ const rows = await readRows(text, w.params, sel);
49
+ return rows[0] ?? null;
50
+ };
51
+ const adapter = {
52
+ async create({ data, model }) {
53
+ rec('create');
54
+ const table = tableOf(getModelName(model));
55
+ const [row] = await conn.insert(table, data);
56
+ return row;
57
+ },
58
+ findOne: findOneImpl,
59
+ async findMany({ model, where, select, limit, offset, sortBy, join, }) {
60
+ rec('findMany');
61
+ if (join)
62
+ throw new Error('zodDbAdapter: join 暂不支持(better-auth 会在缺少 join 时退回多次查询)');
63
+ const table = tableOf(getModelName(model));
64
+ const sel = selectOf(conn, table, select);
65
+ const w = whereOf(table, where);
66
+ let text = `select ${sel.toSQL()} from ${quoteIdent(table.name)}`;
67
+ if (w.text)
68
+ text += ` where ${w.text}`;
69
+ if (sortBy) {
70
+ const dir = sortBy.direction === 'desc' ? 'desc' : 'asc';
71
+ text += ` order by ${quoteIdent(columnOf(table, sortBy.field))} ${dir}`;
72
+ }
73
+ if (limit !== undefined)
74
+ text += ` limit ${Number(limit)}`;
75
+ if (offset !== undefined)
76
+ text += ` offset ${Number(offset)}`;
77
+ return await readRows(text, w.params, sel);
78
+ },
79
+ async count({ model, where }) {
80
+ rec('count');
81
+ const table = tableOf(getModelName(model));
82
+ const w = whereOf(table, where);
83
+ const text = `select count(*)::int as n from ${quoteIdent(table.name)}`
84
+ + (w.text ? ` where ${w.text}` : '');
85
+ const rows = await conn.raw.unsafe(text, w.params);
86
+ return rows[0]?.n ?? 0;
87
+ },
88
+ async update({ model, where, update }) {
89
+ rec('update');
90
+ const table = tableOf(getModelName(model));
91
+ const params = [];
92
+ const w = whereOf(table, where);
93
+ params.push(...w.params);
94
+ const sets = Object.entries(update).filter(([, v]) => v !== undefined);
95
+ if (sets.length === 0) {
96
+ return await findOneImpl({ model, where });
97
+ }
98
+ const setSql = sets.map(([k, v]) => {
99
+ params.push(v);
100
+ return `${quoteIdent(columnOf(table, k))} = $${params.length}`;
101
+ }).join(', ');
102
+ const text = `update ${quoteIdent(table.name)} set ${setSql}`
103
+ + (w.text ? ` where ${w.text}` : '') + ' returning *';
104
+ const rows = await conn.raw.unsafe(text, params);
105
+ if (rows.length === 0)
106
+ return null;
107
+ return table.__mapValid(rows[0], 0);
108
+ },
109
+ async updateMany({ model, where, update }) {
110
+ rec('updateMany');
111
+ const table = tableOf(getModelName(model));
112
+ const params = [];
113
+ const w = whereOf(table, where);
114
+ params.push(...w.params);
115
+ const sets = Object.entries(update).filter(([, v]) => v !== undefined);
116
+ const setSql = sets.map(([k, v]) => {
117
+ params.push(v);
118
+ return `${quoteIdent(columnOf(table, k))} = $${params.length}`;
119
+ }).join(', ');
120
+ const text = `update ${quoteIdent(table.name)} set ${setSql}`
121
+ + (w.text ? ` where ${w.text}` : '');
122
+ const res = await conn.raw.unsafe(text, params);
123
+ return res.count;
124
+ },
125
+ async delete({ model, where }) {
126
+ rec('delete');
127
+ const table = tableOf(getModelName(model));
128
+ const w = whereOf(table, where);
129
+ await conn.raw.unsafe(`delete from ${quoteIdent(table.name)}` + (w.text ? ` where ${w.text}` : ''), w.params);
130
+ },
131
+ async deleteMany({ model, where }) {
132
+ rec('deleteMany');
133
+ const table = tableOf(getModelName(model));
134
+ const w = whereOf(table, where);
135
+ const res = await conn.raw.unsafe(`delete from ${quoteIdent(table.name)}` + (w.text ? ` where ${w.text}` : ''), w.params);
136
+ return res.count;
137
+ },
138
+ };
139
+ return adapter;
140
+ };
141
+ const build = (conn, transaction) => createAdapterFactory({
142
+ config: {
143
+ adapterId: 'zoddb',
144
+ adapterName: 'ZodDB Adapter',
145
+ usePlural: options.usePlural ?? false,
146
+ debugLogs: options.debugLogs ?? false,
147
+ supportsUUIDs: true,
148
+ supportsArrays: true,
149
+ transaction: transaction === false
150
+ ? false
151
+ : (cb) => {
152
+ options.onMethod?.('transaction');
153
+ return conn.begin(async (tx) => cb(createAdapterFactory({
154
+ config: {
155
+ adapterId: 'zoddb',
156
+ adapterName: 'ZodDB Adapter',
157
+ usePlural: options.usePlural ?? false,
158
+ debugLogs: options.debugLogs ?? false,
159
+ supportsUUIDs: true,
160
+ supportsArrays: true,
161
+ transaction: false,
162
+ },
163
+ adapter: makeAdapter(tx),
164
+ })(lazyOptions)));
165
+ },
166
+ },
167
+ adapter: makeAdapter(conn),
168
+ })(lazyOptions);
169
+ return (authOptions) => {
170
+ lazyOptions = authOptions;
171
+ return build(db, options.transaction);
172
+ };
173
+ };
174
+ export { authSchema } from './auth-schema.js';
175
+ //# sourceMappingURL=better-auth-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"better-auth-adapter.js","sourceRoot":"","sources":["../src/better-auth-adapter.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}