@truto/ginger 1.0.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 (47) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +597 -0
  3. package/dist/adapters/bun-sqlite.d.ts +37 -0
  4. package/dist/adapters/bun-sqlite.d.ts.map +1 -0
  5. package/dist/adapters/bun-sqlite.js +136 -0
  6. package/dist/adapters/bun-sqlite.js.map +1 -0
  7. package/dist/adapters/durable-object.d.ts +40 -0
  8. package/dist/adapters/durable-object.d.ts.map +1 -0
  9. package/dist/adapters/durable-object.js +142 -0
  10. package/dist/adapters/durable-object.js.map +1 -0
  11. package/dist/adapters/index.d.ts +5 -0
  12. package/dist/adapters/index.d.ts.map +1 -0
  13. package/dist/adapters/index.js +3 -0
  14. package/dist/adapters/index.js.map +1 -0
  15. package/dist/crypto.d.ts +40 -0
  16. package/dist/crypto.d.ts.map +1 -0
  17. package/dist/crypto.js +148 -0
  18. package/dist/crypto.js.map +1 -0
  19. package/dist/errors.d.ts +64 -0
  20. package/dist/errors.d.ts.map +1 -0
  21. package/dist/errors.js +90 -0
  22. package/dist/errors.js.map +1 -0
  23. package/dist/example.d.ts +119 -0
  24. package/dist/example.d.ts.map +1 -0
  25. package/dist/example.js +297 -0
  26. package/dist/example.js.map +1 -0
  27. package/dist/index.d.ts +54 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +62 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/pagination.d.ts +31 -0
  32. package/dist/pagination.d.ts.map +1 -0
  33. package/dist/pagination.js +173 -0
  34. package/dist/pagination.js.map +1 -0
  35. package/dist/service.d.ts +81 -0
  36. package/dist/service.d.ts.map +1 -0
  37. package/dist/service.js +615 -0
  38. package/dist/service.js.map +1 -0
  39. package/dist/sql-builder.d.ts +48 -0
  40. package/dist/sql-builder.d.ts.map +1 -0
  41. package/dist/sql-builder.js +230 -0
  42. package/dist/sql-builder.js.map +1 -0
  43. package/dist/types.d.ts +266 -0
  44. package/dist/types.d.ts.map +1 -0
  45. package/dist/types.js +2 -0
  46. package/dist/types.js.map +1 -0
  47. package/package.json +94 -0
@@ -0,0 +1,48 @@
1
+ import { sql } from '@truto/sqlite-builder';
2
+ import type { JoinDef, OrderBy } from './types.js';
3
+ /**
4
+ * Build a SELECT query with joins and pagination
5
+ */
6
+ export declare function buildSelect(table: string, options?: {
7
+ columns?: string[];
8
+ where?: Record<string, unknown>;
9
+ joins?: Record<string, JoinDef>;
10
+ include?: Record<string, boolean>;
11
+ orderBy?: OrderBy[];
12
+ limit?: number;
13
+ offset?: number;
14
+ cursorConditions?: ReturnType<typeof sql>;
15
+ }): ReturnType<typeof sql>;
16
+ /**
17
+ * Build an INSERT query
18
+ */
19
+ export declare function buildInsert(table: string, data: Record<string, unknown>): ReturnType<typeof sql>;
20
+ /**
21
+ * Build an UPDATE query
22
+ */
23
+ export declare function buildUpdate(table: string, data: Record<string, unknown>, where: Record<string, unknown>): ReturnType<typeof sql>;
24
+ /**
25
+ * Build a DELETE query
26
+ */
27
+ export declare function buildDelete(table: string, where: Record<string, unknown>): ReturnType<typeof sql>;
28
+ /**
29
+ * Build a COUNT query
30
+ */
31
+ export declare function buildCount(table: string, where?: Record<string, unknown>): ReturnType<typeof sql>;
32
+ /**
33
+ * Build a SELECT query for a single record by primary key
34
+ */
35
+ export declare function buildSelectById(table: string, primaryKey: string | string[], id: string | number | Record<string, unknown>, options?: {
36
+ columns?: string[];
37
+ joins?: Record<string, JoinDef>;
38
+ include?: Record<string, boolean>;
39
+ }): ReturnType<typeof sql>;
40
+ /**
41
+ * Escape a column name using sql.ident
42
+ */
43
+ export declare function escapeColumn(column: string): string;
44
+ /**
45
+ * Escape a table name using sql.ident
46
+ */
47
+ export declare function escapeTable(table: string): string;
48
+ //# sourceMappingURL=sql-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-builder.d.ts","sourceRoot":"","sources":["../src/sql-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,GAAG,EAAE,MAAM,uBAAuB,CAAA;AAE1D,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAElD;;GAEG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gBAAgB,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,CAAC,CAAA;CACrC,GACL,UAAU,CAAC,OAAO,GAAG,CAAC,CA6FxB;AAyCD;;GAEG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,UAAU,CAAC,OAAO,GAAG,CAAC,CAoBxB;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,UAAU,CAAC,OAAO,GAAG,CAAC,CAuBxB;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,UAAU,CAAC,OAAO,GAAG,CAAC,CAgBxB;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,UAAU,CAAC,OAAO,GAAG,CAAC,CAgBxB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,EAC7B,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7C,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7B,GACL,UAAU,CAAC,OAAO,GAAG,CAAC,CAqCxB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD"}
@@ -0,0 +1,230 @@
1
+ import { compileFilter, sql } from '@truto/sqlite-builder';
2
+ import { SqlBuilderError } from './errors.js';
3
+ /**
4
+ * Build a SELECT query with joins and pagination
5
+ */
6
+ export function buildSelect(table, options = {}) {
7
+ try {
8
+ // Build column list
9
+ const selectColumns = [];
10
+ if (options.columns && options.columns.length > 0) {
11
+ selectColumns.push(...options.columns.map((col) => sql.ident(`${table}.${col}`)));
12
+ }
13
+ else {
14
+ selectColumns.push(sql `${sql.ident(table)}.*`);
15
+ }
16
+ // Add join columns
17
+ if (options.joins && options.include) {
18
+ for (const [joinName, joinDef] of Object.entries(options.joins)) {
19
+ if (options.include[joinName]) {
20
+ const joinAlias = joinDef.remote.alias || joinName;
21
+ const joinColumns = joinDef.remote.select.map((col) => sql `${sql.ident(`${joinDef.remote.table}.${col}`)} as ${sql.ident(`${joinAlias}_${col}`)}`);
22
+ selectColumns.push(...joinColumns);
23
+ }
24
+ }
25
+ }
26
+ // Start building the query using sql.join for the column fragments
27
+ let query = sql `SELECT ${sql.join(selectColumns, ', ')} FROM ${sql.ident(table)}`;
28
+ // Add joins
29
+ if (options.joins && options.include) {
30
+ const joinFragments = [];
31
+ for (const [joinName, joinDef] of Object.entries(options.joins)) {
32
+ if (options.include[joinName]) {
33
+ joinFragments.push(buildJoin(table, joinDef));
34
+ }
35
+ }
36
+ if (joinFragments.length > 0) {
37
+ query = sql.join([query, ...joinFragments], ' ');
38
+ }
39
+ }
40
+ // Build final query parts
41
+ const finalParts = [query];
42
+ // Build WHERE conditions
43
+ const whereFragments = [];
44
+ // Regular WHERE conditions
45
+ if (options.where && Object.keys(options.where).length > 0) {
46
+ const whereFilter = compileFilter(options.where);
47
+ whereFragments.push(whereFilter);
48
+ }
49
+ // Cursor conditions
50
+ if (options.cursorConditions && options.cursorConditions.text) {
51
+ whereFragments.push(options.cursorConditions);
52
+ }
53
+ // Add WHERE clause if needed
54
+ if (whereFragments.length > 0) {
55
+ const whereClause = sql.join(whereFragments, ' AND ');
56
+ finalParts.push(sql `WHERE ${whereClause}`);
57
+ }
58
+ // Add ORDER BY
59
+ if (options.orderBy && options.orderBy.length > 0) {
60
+ const orderFragments = options.orderBy.map((order) => {
61
+ const direction = { text: order.direction.toUpperCase(), values: [] };
62
+ return sql `${sql.ident(`${table}.${order.column}`)} ${direction}`;
63
+ });
64
+ finalParts.push(sql `ORDER BY ${sql.join(orderFragments, ', ')}`);
65
+ }
66
+ // Add LIMIT
67
+ if (options.limit) {
68
+ finalParts.push(sql `LIMIT ${options.limit}`);
69
+ }
70
+ // Add OFFSET
71
+ if (options.offset) {
72
+ finalParts.push(sql `OFFSET ${options.offset}`);
73
+ }
74
+ // If no WHERE conditions, just join all parts
75
+ return sql.join(finalParts, ' ');
76
+ }
77
+ catch (error) {
78
+ throw new SqlBuilderError(`Failed to build SELECT query: ${error instanceof Error ? error.message : 'Unknown error'}`, { table, options, error });
79
+ }
80
+ }
81
+ /**
82
+ * Build a JOIN clause
83
+ */
84
+ function buildJoin(baseTable, joinDef) {
85
+ const { remote, localPk, through } = joinDef;
86
+ if (through) {
87
+ // Many-to-many join through junction table
88
+ const throughJoin = sql `LEFT JOIN ${sql.ident(through.table)} ON ${sql.ident(`${baseTable}.${localPk}`)} = ${sql.ident(`${through.table}.${through.from}`)}`;
89
+ const remoteJoin = sql `LEFT JOIN ${sql.ident(remote.table)} ON ${sql.ident(`${through.table}.${through.to}`)} = ${sql.ident(`${remote.table}.${remote.pk}`)}`;
90
+ const joinFragments = [throughJoin, remoteJoin];
91
+ // Add WHERE condition for the join if specified
92
+ if (joinDef.where) {
93
+ const whereCondition = { text: joinDef.where, values: [] };
94
+ joinFragments.push(sql `AND ${whereCondition}`);
95
+ }
96
+ return sql.join(joinFragments, ' ');
97
+ }
98
+ else {
99
+ // Direct join
100
+ const joinFragments = [
101
+ sql `LEFT JOIN ${sql.ident(remote.table)} ON ${sql.ident(`${baseTable}.${localPk}`)} = ${sql.ident(`${remote.table}.${remote.pk}`)}`,
102
+ ];
103
+ // Add WHERE condition for the join if specified
104
+ if (joinDef.where) {
105
+ const whereCondition = { text: joinDef.where, values: [] };
106
+ joinFragments.push(sql `AND ${whereCondition}`);
107
+ }
108
+ return sql.join(joinFragments, ' ');
109
+ }
110
+ }
111
+ /**
112
+ * Build an INSERT query
113
+ */
114
+ export function buildInsert(table, data) {
115
+ try {
116
+ const columns = Object.keys(data);
117
+ const values = Object.values(data);
118
+ // Create individual placeholders for the VALUES clause
119
+ const placeholderFragments = values.map((value) => sql `${value}`);
120
+ const query = sql `
121
+ INSERT INTO ${sql.ident(table)} (${sql.ident(columns)})
122
+ VALUES (${sql.join(placeholderFragments, ', ')})
123
+ `;
124
+ return query;
125
+ }
126
+ catch (error) {
127
+ throw new SqlBuilderError(`Failed to build INSERT query: ${error instanceof Error ? error.message : 'Unknown error'}`, { table, data, error });
128
+ }
129
+ }
130
+ /**
131
+ * Build an UPDATE query
132
+ */
133
+ export function buildUpdate(table, data, where) {
134
+ try {
135
+ // Build SET clauses using sql fragments
136
+ const setFragments = Object.entries(data).map(([column, value]) => sql `${sql.ident(column)} = ${value}`);
137
+ // Build WHERE clause
138
+ const whereFilter = compileFilter(where);
139
+ const queryParts = [
140
+ sql `UPDATE ${sql.ident(table)}`,
141
+ sql `SET ${sql.join(setFragments, ', ')}`,
142
+ sql `WHERE ${whereFilter}`,
143
+ ];
144
+ return sql.join(queryParts, ' ');
145
+ }
146
+ catch (error) {
147
+ throw new SqlBuilderError(`Failed to build UPDATE query: ${error instanceof Error ? error.message : 'Unknown error'}`, { table, data, where, error });
148
+ }
149
+ }
150
+ /**
151
+ * Build a DELETE query
152
+ */
153
+ export function buildDelete(table, where) {
154
+ try {
155
+ const whereFilter = compileFilter(where);
156
+ const queryParts = [
157
+ sql `DELETE FROM ${sql.ident(table)}`,
158
+ sql `WHERE ${whereFilter}`,
159
+ ];
160
+ return sql.join(queryParts, ' ');
161
+ }
162
+ catch (error) {
163
+ throw new SqlBuilderError(`Failed to build DELETE query: ${error instanceof Error ? error.message : 'Unknown error'}`, { table, where, error });
164
+ }
165
+ }
166
+ /**
167
+ * Build a COUNT query
168
+ */
169
+ export function buildCount(table, where) {
170
+ try {
171
+ const queryParts = [sql `SELECT COUNT(*) as count FROM ${sql.ident(table)}`];
172
+ if (where && Object.keys(where).length > 0) {
173
+ const whereFilter = compileFilter(where);
174
+ queryParts.push(sql `WHERE ${whereFilter}`);
175
+ }
176
+ return sql.join(queryParts, ' ');
177
+ }
178
+ catch (error) {
179
+ throw new SqlBuilderError(`Failed to build COUNT query: ${error instanceof Error ? error.message : 'Unknown error'}`, { table, where, error });
180
+ }
181
+ }
182
+ /**
183
+ * Build a SELECT query for a single record by primary key
184
+ */
185
+ export function buildSelectById(table, primaryKey, id, options = {}) {
186
+ const where = {};
187
+ // Check if there are active JOINs that could cause column ambiguity
188
+ const hasActiveJoins = options.joins &&
189
+ options.include &&
190
+ Object.keys(options.include).some((key) => options.include[key]);
191
+ if (Array.isArray(primaryKey)) {
192
+ if (typeof id !== 'object' || id === null || Array.isArray(id)) {
193
+ throw new SqlBuilderError('Composite primary key requires an object with key-value pairs', { primaryKey, id });
194
+ }
195
+ if (hasActiveJoins) {
196
+ // Use qualified table syntax to avoid column ambiguity
197
+ where[`$${table}`] = { ...id };
198
+ }
199
+ else {
200
+ Object.assign(where, id);
201
+ }
202
+ }
203
+ else {
204
+ if (hasActiveJoins) {
205
+ // Use qualified table syntax to avoid column ambiguity
206
+ where[`$${table}`] = { [primaryKey]: id };
207
+ }
208
+ else {
209
+ where[primaryKey] = id;
210
+ }
211
+ }
212
+ return buildSelect(table, {
213
+ ...options,
214
+ where,
215
+ limit: 1,
216
+ });
217
+ }
218
+ /**
219
+ * Escape a column name using sql.ident
220
+ */
221
+ export function escapeColumn(column) {
222
+ return sql.ident(column).text;
223
+ }
224
+ /**
225
+ * Escape a table name using sql.ident
226
+ */
227
+ export function escapeTable(table) {
228
+ return sql.ident(table).text;
229
+ }
230
+ //# sourceMappingURL=sql-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-builder.js","sourceRoot":"","sources":["../src/sql-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,266 @@
1
+ import type { z } from 'zod/v4';
2
+ /**
3
+ * Generic SQLite database interface.
4
+ * Compatible with Cloudflare D1, Bun SQLite (via adapter), and
5
+ * Durable Object SqlStorage (via adapter).
6
+ */
7
+ export interface Database {
8
+ prepare(query: string): PreparedStatement;
9
+ dump(): Promise<ArrayBuffer>;
10
+ batch<T = unknown>(statements: PreparedStatement[]): Promise<QueryResult<T>[]>;
11
+ exec(query: string): Promise<ExecResult>;
12
+ }
13
+ export interface PreparedStatement {
14
+ bind(...values: unknown[]): PreparedStatement;
15
+ first<T = unknown>(): Promise<T | null>;
16
+ run(): Promise<QueryResult>;
17
+ all<T = unknown>(): Promise<QueryResult<T[]>>;
18
+ raw<T = unknown>(): Promise<T[]>;
19
+ }
20
+ export interface QueryResult<T = unknown> {
21
+ results?: T;
22
+ success: boolean;
23
+ meta: {
24
+ duration: number;
25
+ size_after: number;
26
+ rows_read: number;
27
+ rows_written: number;
28
+ last_row_id: number;
29
+ changed_db: boolean;
30
+ changes: number;
31
+ };
32
+ }
33
+ export interface ExecResult {
34
+ count: number;
35
+ duration: number;
36
+ }
37
+ /**
38
+ * Authentication context passed to all service methods
39
+ */
40
+ export interface AuthContext {
41
+ user?: {
42
+ id: string;
43
+ roles: string[];
44
+ [k: string]: unknown;
45
+ };
46
+ }
47
+ /**
48
+ * Base context for all hooks
49
+ */
50
+ export interface BaseCtx {
51
+ auth: AuthContext;
52
+ db: Database;
53
+ deps: ServiceDeps;
54
+ method: MethodName;
55
+ params?: unknown;
56
+ data?: unknown;
57
+ result?: unknown;
58
+ error?: Error | undefined;
59
+ }
60
+ /**
61
+ * Error context for error hooks
62
+ */
63
+ export interface ErrorCtx extends BaseCtx {
64
+ error: Error;
65
+ }
66
+ /**
67
+ * Hook function type
68
+ */
69
+ export type Hook<TCtx = BaseCtx> = (ctx: TCtx) => Promise<void> | void;
70
+ /**
71
+ * Hook phases
72
+ */
73
+ export type HookPhase = 'before' | 'after' | 'error';
74
+ /**
75
+ * Method names that can have hooks
76
+ */
77
+ export type MethodName = 'list' | 'get' | 'create' | 'update' | 'delete' | 'count' | 'query' | string;
78
+ /**
79
+ * Hook map structure
80
+ */
81
+ export type HookMap<TCtx = BaseCtx> = {
82
+ [P in MethodName]?: {
83
+ before?: Hook<TCtx> | Hook<TCtx>[];
84
+ after?: Hook<TCtx> | Hook<TCtx>[];
85
+ error?: Hook<TCtx & {
86
+ error: Error;
87
+ }> | Hook<TCtx & {
88
+ error: Error;
89
+ }>[];
90
+ };
91
+ };
92
+ /**
93
+ * Service dependencies
94
+ */
95
+ export type ServiceDeps = Record<string, BaseService<any, any, any, any, any>>;
96
+ /**
97
+ * Order direction for sorting
98
+ */
99
+ export type OrderDirection = 'asc' | 'desc';
100
+ /**
101
+ * Order by clause
102
+ */
103
+ export interface OrderBy {
104
+ column: string;
105
+ direction: OrderDirection;
106
+ }
107
+ /**
108
+ * Pagination parameters
109
+ */
110
+ export interface ListParams {
111
+ cursor?: string;
112
+ limit?: number;
113
+ orderBy?: OrderBy[];
114
+ where?: Record<string, unknown>;
115
+ include?: Record<string, boolean>;
116
+ includeSecrets?: boolean;
117
+ }
118
+ /**
119
+ * Paginated list result
120
+ */
121
+ export interface ListResult<T> {
122
+ result: T[];
123
+ nextCursor?: string | undefined;
124
+ prevCursor?: string | undefined;
125
+ }
126
+ /**
127
+ * Count parameters
128
+ */
129
+ export interface CountParams {
130
+ where?: Record<string, unknown>;
131
+ }
132
+ /**
133
+ * Get parameters
134
+ */
135
+ export interface GetParams {
136
+ include?: Record<string, boolean>;
137
+ includeSecrets?: boolean;
138
+ }
139
+ /**
140
+ * Create parameters
141
+ */
142
+ export interface CreateParams {
143
+ include?: Record<string, boolean>;
144
+ includeSecrets?: boolean;
145
+ }
146
+ /**
147
+ * Update parameters
148
+ */
149
+ export interface UpdateParams {
150
+ include?: Record<string, boolean>;
151
+ includeSecrets?: boolean;
152
+ }
153
+ /**
154
+ * Delete parameters
155
+ */
156
+ export interface DeleteParams {
157
+ include?: Record<string, boolean>;
158
+ }
159
+ /**
160
+ * Query parameters for custom SQL
161
+ */
162
+ export interface QueryParams {
163
+ includeSecrets?: boolean;
164
+ }
165
+ /**
166
+ * Method options base interface
167
+ */
168
+ export interface MethodOptions {
169
+ auth: AuthContext;
170
+ }
171
+ /**
172
+ * Join definition kinds
173
+ */
174
+ export type JoinKind = 'one' | 'many';
175
+ /**
176
+ * Join definition
177
+ */
178
+ export interface JoinDef {
179
+ kind: JoinKind;
180
+ localPk: string;
181
+ through?: {
182
+ table: string;
183
+ from: string;
184
+ to: string;
185
+ };
186
+ remote: {
187
+ table: string;
188
+ pk: string;
189
+ select: string[];
190
+ alias?: string;
191
+ };
192
+ where?: string;
193
+ schema: z.ZodTypeAny;
194
+ }
195
+ /**
196
+ * Secret field definition
197
+ */
198
+ export interface SecretFieldDef {
199
+ logicalName: string;
200
+ columnName: string;
201
+ keyId?: string;
202
+ }
203
+ /**
204
+ * Encryption key provider
205
+ */
206
+ export interface KeyProvider {
207
+ getKey(keyId: string): Promise<CryptoKey> | CryptoKey;
208
+ }
209
+ /**
210
+ * Cursor token structure (internal)
211
+ */
212
+ export interface CursorToken {
213
+ orderBy: OrderBy[];
214
+ values: unknown[];
215
+ direction: 'next' | 'prev';
216
+ }
217
+ /**
218
+ * Base service interface
219
+ */
220
+ export interface BaseService<TRow extends z.ZodTypeAny, TCreate extends z.ZodTypeAny, TUpdate extends z.ZodTypeAny, TJoins extends Record<string, JoinDef>, _TSecrets extends readonly SecretFieldDef[] | undefined> {
221
+ list(params?: ListParams & MethodOptions): Promise<ListResult<z.infer<TRow> & ComputeJoins<TJoins, ListParams['include']>>>;
222
+ get(id: string | number, opts?: GetParams & MethodOptions): Promise<(z.infer<TRow> & ComputeJoins<TJoins, GetParams['include']>) | null>;
223
+ create(data: z.infer<TCreate>, opts?: CreateParams & MethodOptions): Promise<z.infer<TRow> & ComputeJoins<TJoins, CreateParams['include']>>;
224
+ update(id: string | number, data: Partial<z.infer<TUpdate>>, opts?: UpdateParams & MethodOptions): Promise<(z.infer<TRow> & ComputeJoins<TJoins, UpdateParams['include']>) | null>;
225
+ delete(id: string | number, opts?: DeleteParams & MethodOptions): Promise<boolean>;
226
+ count(params?: CountParams & MethodOptions): Promise<number>;
227
+ query<T = z.infer<TRow>>(sql: string, params?: QueryParams & MethodOptions): Promise<T[]>;
228
+ }
229
+ /**
230
+ * Service options interface
231
+ */
232
+ export interface ServiceOptions<TRow extends z.ZodTypeAny, TCreate extends z.ZodTypeAny, TUpdate extends z.ZodTypeAny, TJoins extends Record<string, JoinDef>, TSecrets extends readonly SecretFieldDef[] | undefined, TDeps extends Record<string, BaseService<any, any, any, any, any>> = Record<string, never>> {
233
+ table: string;
234
+ db: Database;
235
+ builder?: any;
236
+ rowSchema: TRow;
237
+ createSchema: TCreate;
238
+ updateSchema: TUpdate;
239
+ joins?: TJoins;
240
+ secrets?: TSecrets;
241
+ hooks?: Partial<HookMap<BaseCtx>>;
242
+ deps?: TDeps;
243
+ primaryKey?: string | string[];
244
+ defaultOrderBy?: OrderBy;
245
+ keyProvider?: KeyProvider;
246
+ encryptionKeys?: Record<string, string>;
247
+ }
248
+ /**
249
+ * Compute join types based on include parameter
250
+ */
251
+ export type ComputeJoins<TJoins extends Record<string, JoinDef>, TInclude extends Record<string, boolean> | undefined> = TInclude extends Record<string, boolean> ? {
252
+ [K in keyof TInclude & keyof TJoins]: TInclude[K] extends true ? TJoins[K]['kind'] extends 'one' ? z.infer<TJoins[K]['schema']> | null : z.infer<TJoins[K]['schema']>[] : never;
253
+ } : Record<string, never>;
254
+ /**
255
+ * Extract row type from service
256
+ */
257
+ export type ServiceRow<T> = T extends BaseService<infer TRow, any, any, any, any> ? z.infer<TRow> : never;
258
+ /**
259
+ * Extract create type from service
260
+ */
261
+ export type ServiceCreate<T> = T extends BaseService<any, infer TCreate, any, any, any> ? z.infer<TCreate> : never;
262
+ /**
263
+ * Extract update type from service
264
+ */
265
+ export type ServiceUpdate<T> = T extends BaseService<any, any, infer TUpdate, any, any> ? z.infer<TUpdate> : never;
266
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}