bun-query-builder 0.1.15 → 0.1.16

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.
package/dist/browser.d.ts CHANGED
@@ -56,38 +56,29 @@ export declare function createBrowserDb<Tables extends Record<string, any>>(): {
56
56
  export declare function createBrowserModel<const TDef extends BrowserModelDefinition>(definition: TDef): void;
57
57
  /**
58
58
  * Auth helpers for browser
59
- * @defaultValue
60
- * ```ts
61
- * {
62
- * async login: (credentials: { email: string, password: string }) => unknown,
63
- * async register: (data: { name: string, email: string, password: string }) => unknown,
64
- * async logout: () => unknown,
65
- * async user: () => unknown,
66
- * async check: () => unknown
67
- * }
68
- * ```
59
+ * @defaultValue `{ async login: () => unknown, async register: () => unknown }`
69
60
  */
70
61
  export declare const browserAuth: {
71
62
  /**
72
63
  * Login and store token
73
64
  */
74
- async login: (credentials: { email: string, password: string }) => unknown;
65
+ async login: (credentials: { email: string, password: string }) => Promise<;
75
66
  /**
76
67
  * Register a new user
77
68
  */
78
- async register: (data: { name: string, email: string, password: string }) => unknown;
69
+ async register: (data: { name: string, email: string, password: string }) => Promise<;
79
70
  /**
80
71
  * Logout and clear token
81
72
  */
82
- async logout: () => unknown;
73
+ async logout: () => Promise<void>;
83
74
  /**
84
75
  * Get current authenticated user
85
76
  */
86
- async user: () => unknown;
77
+ async user: unknown;
87
78
  /**
88
79
  * Check if user is authenticated
89
80
  */
90
- async check: () => unknown;
81
+ async check: () => Promise<boolean>;
91
82
  /**
92
83
  * Get the current token
93
84
  */
@@ -15,17 +15,5 @@ export declare interface DialectDriver {
15
15
  recordMigrationQuery: () => string
16
16
  }
17
17
  export declare class MySQLDriver implements DialectDriver {
18
- createEnumType(_enumTypeName: string, _values: string[]): string;
19
- createTable(table: TablePlan): string;
20
- createIndex(tableName: string, index: IndexPlan): string;
21
- addForeignKey(tableName: string, columnName: string, refTable: string, refColumn: string, onDelete?: string, onUpdate?: string): string;
22
- addColumn(tableName: string, column: ColumnPlan): string;
23
- modifyColumn(tableName: string, column: ColumnPlan): string;
24
- dropTable(tableName: string): string;
25
- dropColumn(tableName: string, columnName: string): string;
26
- dropIndex(tableName: string, indexName: string): string;
27
- dropEnumType(_enumTypeName: string): string;
28
- createMigrationsTable(): string;
29
- getExecutedMigrationsQuery(): string;
30
- recordMigrationQuery(): string;
18
+
31
19
  }
@@ -15,17 +15,5 @@ export declare interface DialectDriver {
15
15
  recordMigrationQuery: () => string
16
16
  }
17
17
  export declare class PostgresDriver implements DialectDriver {
18
- createEnumType(enumTypeName: string, values: string[]): string;
19
- createTable(table: TablePlan): string;
20
- createIndex(tableName: string, index: IndexPlan): string;
21
- addForeignKey(tableName: string, columnName: string, refTable: string, refColumn: string, onDelete?: string, onUpdate?: string): string;
22
- addColumn(tableName: string, column: ColumnPlan): string;
23
- modifyColumn(tableName: string, column: ColumnPlan): string;
24
- dropTable(tableName: string): string;
25
- dropColumn(tableName: string, columnName: string): string;
26
- dropIndex(tableName: string, indexName: string): string;
27
- dropEnumType(enumTypeName: string): string;
28
- createMigrationsTable(): string;
29
- getExecutedMigrationsQuery(): string;
30
- recordMigrationQuery(): string;
18
+
31
19
  }
@@ -15,17 +15,5 @@ export declare interface DialectDriver {
15
15
  recordMigrationQuery: () => string
16
16
  }
17
17
  export declare class SQLiteDriver implements DialectDriver {
18
- createEnumType(_enumTypeName: string, _values: string[]): string;
19
- createTable(table: TablePlan): string;
20
- createIndex(tableName: string, index: IndexPlan): string;
21
- addForeignKey(tableName: string, columnName: string, refTable: string, refColumn: string, onDelete?: string, onUpdate?: string): string;
22
- addColumn(tableName: string, column: ColumnPlan): string;
23
- modifyColumn(tableName: string, column: ColumnPlan): string;
24
- dropTable(tableName: string): string;
25
- dropColumn(tableName: string, columnName: string): string;
26
- dropIndex(tableName: string, indexName: string): string;
27
- dropEnumType(_enumTypeName: string): string;
28
- createMigrationsTable(): string;
29
- getExecutedMigrationsQuery(): string;
30
- recordMigrationQuery(): string;
18
+
31
19
  }
@@ -1,6 +1,10 @@
1
1
  import { DynamoDBClient } from './client';
2
2
  import type { DynamoDBMigrationState } from './migrations';
3
3
  import type { DynamoDBTableDefinition } from '../drivers/dynamodb';
4
+ // ============================================================================
5
+ // Constants
6
+ // ============================================================================
7
+ declare const MIGRATIONS_TABLE: '_qb_migrations';
4
8
  /**
5
9
  * Tracks and manages DynamoDB migration state
6
10
  */
@@ -13,16 +13,16 @@ export declare function createRepository<T extends Record<string, any>>(manager:
13
13
  * @defaultValue
14
14
  * ```ts
15
15
  * {
16
- * simpleEntity: (entityName: string, idField?: string) => unknown,
16
+ * simpleEntity: (entityName: string, idField?: string) => SingleTableEntity,
17
17
  * oneToMany: (parentEntity: string,
18
18
  * childEntity: string,
19
19
  * parentIdField?: string,
20
- * childIdField?: string,) => unknown,
20
+ * childIdField?: string,) => { parent: SingleTableEntity, child: SingleTableEntity },
21
21
  * manyToMany: (entityName: string,
22
22
  * relationName: string,
23
23
  * idField?: string,
24
- * relatedIdField?: string,) => unknown,
25
- * hierarchical: (entityName: string, rootIdField?: string, pathField?: string) => unknown
24
+ * relatedIdField?: string,) => { entity: SingleTableEntity, relation: SingleTableEntity },
25
+ * hierarchical: (entityName: string, rootIdField?: string, pathField?: string) => SingleTableEntity
26
26
  * }
27
27
  * ```
28
28
  */
@@ -32,26 +32,32 @@ export declare const SingleTablePatterns: {
32
32
  * PK: USER#<userId>
33
33
  * SK: PROFILE for metadata, or related items like ORDER#<orderId>
34
34
  */
35
- simpleEntity: (entityName: string, idField?: string) => unknown;
35
+ simpleEntity: (entityName: string, idField?: string) => SingleTableEntity;
36
36
  /**
37
37
  * One-to-many relationship pattern
38
38
  * Parent: PK=PARENT#<parentId>, SK=METADATA
39
39
  * Child: PK=PARENT#<parentId>, SK=CHILD#<childId>
40
40
  */
41
- oneToMany: (parentEntity: string, childEntity: string, parentIdField?: string, childIdField?: string,) => unknown;
41
+ oneToMany: (parentEntity: string,
42
+ childEntity: string,
43
+ parentIdField?: string,
44
+ childIdField?: string,) => ;
42
45
  /**
43
46
  * Many-to-many relationship pattern using adjacency list
44
47
  * Entity: PK=ENTITY#<entityId>, SK=METADATA
45
48
  * Relationship: PK=ENTITY#<entityId>, SK=RELATED#<relatedId>
46
49
  * Inverse: PK=ENTITY#<relatedId>, SK=RELATED#<entityId> (via GSI)
47
50
  */
48
- manyToMany: (entityName: string, relationName: string, idField?: string, relatedIdField?: string,) => unknown;
51
+ manyToMany: (entityName: string,
52
+ relationName: string,
53
+ idField?: string,
54
+ relatedIdField?: string,) => ;
49
55
  /**
50
56
  * Hierarchical data pattern (e.g., org chart, file system)
51
57
  * PK: ROOT#<rootId>
52
58
  * SK: PATH#<path> (e.g., PATH#/folder1/folder2/file)
53
59
  */
54
- hierarchical: (entityName: string, rootIdField?: string, pathField?: string) => unknown
60
+ hierarchical: (entityName: string, rootIdField?: string, pathField?: string) => SingleTableEntity
55
61
  };
56
62
  /**
57
63
  * Entity definition for single table design
package/dist/orm.d.ts CHANGED
@@ -41,6 +41,11 @@ export declare interface TypedAttribute<T = unknown> {
41
41
  // eslint-disable-next-line ts/no-empty-object-type
42
42
  export declare interface ModelHookInstance extends Record<string, unknown> {
43
43
  get(key: string): unknown
44
+ getAttribute?(key: string): unknown
45
+ getAttributes?(): Record<string, unknown>
46
+ only?(keys: ReadonlyArray<string>): Record<string, unknown>
47
+ except?(keys: ReadonlyArray<string>): Record<string, unknown>
48
+ toArray?(): Record<string, unknown>
44
49
  }
45
50
  // Base model definition
46
51
  export declare interface ModelDefinition {
@@ -210,7 +215,12 @@ declare type WhereOperator = '=' | '!=' | '<' | '>' | '<=' | '>=' | 'like' | 'in
210
215
  declare class ModelInstance<TDef extends ModelDefinition, TSelected extends ColumnName<TDef> = ColumnName<TDef>> {
211
216
  constructor(definition: TDef, attributes?: Partial<ModelAttributes<TDef>>);
212
217
  get<K extends TSelected>(key: K): K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : never;
218
+ getAttribute<K extends TSelected>(key: K): K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown;
219
+ getAttributes(): Pick<ModelAttributes<TDef>, TSelected & keyof ModelAttributes<TDef>>;
213
220
  set<K extends ColumnName<TDef>>(key: K, value: K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown): void;
221
+ only<K extends TSelected>(keys: ReadonlyArray<K>): Partial<ModelAttributes<TDef>>;
222
+ except<K extends TSelected>(keys: ReadonlyArray<K>): Partial<ModelAttributes<TDef>>;
223
+ toArray(): Record<string, unknown>;
214
224
  getRelation(name: string): ModelInstance<any, any>[] | ModelInstance<any, any> | null | undefined;
215
225
  setRelation(name: string, data: ModelInstance<any, any>[] | ModelInstance<any, any> | null): void;
216
226
  getLoadedRelations(): Record<string, ModelInstance<any, any>[] | ModelInstance<any, any> | null>;
@@ -224,8 +234,9 @@ declare class ModelInstance<TDef extends ModelDefinition, TSelected extends Colu
224
234
  forceFill(data: Partial<InferModelAttributes<TDef>>): this;
225
235
  save(): this;
226
236
  update(data: Partial<Pick<InferModelAttributes<TDef>, FillableKeys<TDef>>>): this;
237
+ fresh(): ModelInstance<TDef, TSelected> | null;
227
238
  delete(): boolean;
228
- refresh(): this;
239
+ refresh(): this | null;
229
240
  replicate(): ModelInstance<TDef, TSelected>;
230
241
  toJSON(): Omit<Pick<ModelAttributes<TDef>, TSelected & keyof ModelAttributes<TDef>>, HiddenKeys<TDef>>;
231
242
  toArray(): Omit<Pick<ModelAttributes<TDef>, TSelected & keyof ModelAttributes<TDef>>, HiddenKeys<TDef>>;
@@ -242,10 +253,21 @@ declare class ModelQueryBuilder<TDef extends ModelDefinition, TSelected extends
242
253
  orWhere<K extends ColumnName<TDef>>(column: K, operator: WhereOperator, value: K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown): ModelQueryBuilder<TDef, TSelected>;
243
254
  orWhere<K extends ColumnName<TDef>>(column: K, operatorOrValue: WhereOperator | unknown, value?: unknown): ModelQueryBuilder<TDef, TSelected>;
244
255
  whereIn<K extends ColumnName<TDef>>(column: K, values: (K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown)[]): ModelQueryBuilder<TDef, TSelected>;
256
+ orWhereIn<K extends ColumnName<TDef>>(column: K, values: (K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown)[]): ModelQueryBuilder<TDef, TSelected>;
245
257
  whereNotIn<K extends ColumnName<TDef>>(column: K, values: (K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown)[]): ModelQueryBuilder<TDef, TSelected>;
258
+ orWhereNotIn<K extends ColumnName<TDef>>(column: K, values: (K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown)[]): ModelQueryBuilder<TDef, TSelected>;
246
259
  whereNull<K extends ColumnName<TDef>>(column: K): ModelQueryBuilder<TDef, TSelected>;
260
+ orWhereNull<K extends ColumnName<TDef>>(column: K): ModelQueryBuilder<TDef, TSelected>;
247
261
  whereNotNull<K extends ColumnName<TDef>>(column: K): ModelQueryBuilder<TDef, TSelected>;
262
+ orWhereNotNull<K extends ColumnName<TDef>>(column: K): ModelQueryBuilder<TDef, TSelected>;
248
263
  whereLike<K extends ColumnName<TDef>>(column: K, pattern: string): ModelQueryBuilder<TDef, TSelected>;
264
+ orWhereLike<K extends ColumnName<TDef>>(column: K, pattern: string): ModelQueryBuilder<TDef, TSelected>;
265
+ whereNotLike<K extends ColumnName<TDef>>(column: K, pattern: string): ModelQueryBuilder<TDef, TSelected>;
266
+ orWhereNotLike<K extends ColumnName<TDef>>(column: K, pattern: string): ModelQueryBuilder<TDef, TSelected>;
267
+ whereRaw(fragment: string, ...params: unknown[]): ModelQueryBuilder<TDef, TSelected>;
268
+ orWhereRaw(fragment: string, ...params: unknown[]): ModelQueryBuilder<TDef, TSelected>;
269
+ whereGroup(callback: (builder: ModelQueryBuilder<TDef, TSelected>) => unknown): ModelQueryBuilder<TDef, TSelected>;
270
+ orWhereGroup(callback: (builder: ModelQueryBuilder<TDef, TSelected>) => unknown): ModelQueryBuilder<TDef, TSelected>;
249
271
  whereBetween<K extends ColumnName<TDef>>(column: K, range: [min: K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown, max: K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown]): ModelQueryBuilder<TDef, TSelected>;
250
272
  whereNotBetween<K extends ColumnName<TDef>>(column: K, range: [min: K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown, max: K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown]): ModelQueryBuilder<TDef, TSelected>;
251
273
  when(condition: unknown, callback: (builder: ModelQueryBuilder<TDef, TSelected>) => ModelQueryBuilder<TDef, TSelected>): ModelQueryBuilder<TDef, TSelected>;
@@ -283,8 +305,8 @@ declare class ModelQueryBuilder<TDef extends ModelDefinition, TSelected extends
283
305
  to: number | null
284
306
  };
285
307
  pluck<K extends ColumnName<TDef>>(column: K): (K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown)[];
286
- max<K extends ColumnName<TDef>>(column: K): number;
287
- min<K extends ColumnName<TDef>>(column: K): number;
308
+ max<K extends ColumnName<TDef>>(column: K): number | null;
309
+ min<K extends ColumnName<TDef>>(column: K): number | null;
288
310
  avg<K extends NumericColumns<TDef>>(column: K): number;
289
311
  sum<K extends NumericColumns<TDef>>(column: K): number;
290
312
  delete(): number;
@@ -37,7 +37,6 @@ var __export = (target, all) => {
37
37
  });
38
38
  };
39
39
  var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
40
- var __promiseAll = (args) => Promise.all(args);
41
40
  var __require = import.meta.require;
42
41
 
43
42
  // src/browser.ts
@@ -37,7 +37,6 @@ var __export = (target, all) => {
37
37
  });
38
38
  };
39
39
  var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
40
- var __promiseAll = (args) => Promise.all(args);
41
40
  var __require = import.meta.require;
42
41
 
43
42
  // src/drivers/dynamodb.ts