@ez4/database 0.25.0 → 0.26.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.
@@ -47,12 +47,12 @@ export declare namespace Query {
47
47
  data: Prettify<OptionalObject<UpdateDataInput<T>>>;
48
48
  where?: WhereInput<T>;
49
49
  };
50
- export type FindManyInput<S extends AnyObject, T extends TableMetadata, C extends boolean> = PaginationUtils.Range<T['engine']> & {
51
- count?: C;
50
+ export type FindManyInput<S extends AnyObject, C extends boolean, T extends TableMetadata> = PaginationUtils.Range<T['engine']> & {
52
51
  select: StrictSelectInput<S, T>;
53
52
  include?: StrictIncludeInput<S, T>;
54
53
  where?: WhereInput<T>;
55
54
  order?: OrderInput<T>;
55
+ count?: C;
56
56
  };
57
57
  export type DeleteManyInput<S extends AnyObject, T extends TableMetadata> = PaginationUtils.End<T['engine']> & {
58
58
  select?: StrictSelectInput<S, T>;
@@ -62,21 +62,20 @@ export declare namespace Query {
62
62
  export type CountInput<T extends TableMetadata> = {
63
63
  where?: WhereInput<T>;
64
64
  };
65
- export type InsertOneResult<S extends AnyObject, T extends TableMetadata> = S extends never ? void : Record<S, T>;
66
- export type UpdateOneResult<S extends AnyObject, T extends TableMetadata> = S extends never ? void : Record<S, T> | undefined;
67
- export type FindOneResult<S extends AnyObject, T extends TableMetadata> = S extends never ? void : Record<S, T> | undefined;
68
- export type UpsertOneResult<S extends AnyObject, T extends TableMetadata> = S extends never ? void : Record<S, T>;
69
- export type DeleteOneResult<S extends AnyObject, T extends TableMetadata> = S extends never ? void : Record<S, T> | undefined;
70
- export type UpdateManyResult<S extends AnyObject, T extends TableMetadata> = S extends never ? void : Record<S, T>[];
65
+ export type InsertOneResult<S extends AnyObject, T extends TableMetadata> = Query.SelectInput<T> extends S ? void : Record<S, T>;
66
+ export type UpdateOneResult<S extends AnyObject, T extends TableMetadata> = Query.SelectInput<T> extends S ? void : Record<S, T> | undefined;
67
+ export type FindOneResult<S extends AnyObject, T extends TableMetadata> = Query.SelectInput<T> extends S ? void : Record<S, T> | undefined;
68
+ export type UpsertOneResult<S extends AnyObject, T extends TableMetadata> = Query.SelectInput<T> extends S ? void : Record<S, T>;
69
+ export type DeleteOneResult<S extends AnyObject, T extends TableMetadata> = Query.SelectInput<T> extends S ? void : Record<S, T> | undefined;
70
+ export type UpdateManyResult<S extends AnyObject, T extends TableMetadata> = Query.SelectInput<T> extends S ? void : Record<S, T>[];
71
71
  export type InsertManyResult = void;
72
- export type FindManyResult<S extends AnyObject, T extends TableMetadata, C extends boolean> = PaginationUtils.Result<T['engine']> & (C extends true ? {
73
- records: Record<S, T>[];
72
+ export type FindManyResult<S extends AnyObject, C extends boolean, T extends TableMetadata> = PaginationUtils.Result<T['engine']> & {
73
+ records: Query.SelectInput<T> extends S ? void : Record<S, T>[];
74
+ } & (false extends C ? {} : {
74
75
  total: number;
75
- } : {
76
- records: Record<S, T>[];
77
76
  });
78
- export type DeleteManyResult<S extends AnyObject, T extends TableMetadata> = Record<S, T>[];
79
- export type Record<S extends AnyObject, T extends TableMetadata> = S extends never ? undefined : PartialObject<SelectFields<T['schema'], T['relations']>, S>;
77
+ export type DeleteManyResult<S extends AnyObject, T extends TableMetadata> = Query.SelectInput<T> extends S ? void : Record<S, T>[];
78
+ export type Record<S extends AnyObject, T extends TableMetadata> = PartialObject<SelectFields<T['schema'], T['relations']>, S>;
80
79
  export type SelectInput<T extends TableMetadata> = PartialProperties<SelectFields<T['schema'], T['relations']>>;
81
80
  export type StrictSelectInput<S extends AnyObject, T extends TableMetadata> = StrictObject<S, FlatObject<SelectFields<T['schema'], T['relations']>>>;
82
81
  export type InsertDataInput<T extends TableMetadata> = IsObjectEmpty<T['relations']['changes']> extends false ? Omit<T['schema'] & T['relations']['changes'], T['relations']['indexes']> : T['schema'];
@@ -96,7 +95,7 @@ export declare namespace Query {
96
95
  OR?: WhereInput<T>[];
97
96
  }>;
98
97
  type SelectFields<T extends Database.Schema, R extends RelationMetadata> = IsObjectEmpty<R['selects']> extends true ? T : T & R['selects'];
99
- type WhereOperations<V, E extends DatabaseEngine> = WhereNegate<V> | WhereEqual<V> | WhereGreaterThan<V> | WhereGreaterThanOrEqual<V> | WhereLessThan<V> | WhereLessThanOrEqual<V> | WhereIn<V> | WhereBetween<V> | WhereIsMissing | WhereIsNull | WhereStartsWith<E> | WhereContains<V, E>;
98
+ type WhereOperations<V, E extends DatabaseEngine> = WhereNegate<V, E> | WhereEqual<V, E> | WhereGreaterThan<V> | WhereGreaterThanOrEqual<V> | WhereLessThan<V> | WhereLessThanOrEqual<V> | WhereIn<V> | WhereBetween<V> | WhereIsMissing | WhereIsNull | WhereStartsWith<E> | WhereContains<V, E>;
100
99
  type WhereField<V, E extends DatabaseEngine> = IsObject<V> extends false ? V | WhereOperations<V, E> : IsNullable<V> extends true ? null | WhereObjectField<NonNullable<V>, E> : WhereObjectField<NonNullable<V>, E>;
101
100
  type WhereObjectField<V extends AnyObject, E extends DatabaseEngine> = {
102
101
  [P in keyof V]?: WhereField<V[P], E>;
@@ -120,11 +119,11 @@ export declare namespace Query {
120
119
  };
121
120
  type WhereCommonFilters<V extends AnyObject, T extends TableMetadata, I extends Database.Indexes> = IsObjectEmpty<I> extends true ? WhereObjectField<V, T['engine']> : WhereRequiredFilters<V, I> & WhereOptionalFilters<V, T, I>;
122
121
  type WhereInputFilters<T extends TableMetadata, I extends Database.Indexes> = WhereCommonFilters<T['schema'], T, I> & (IsObjectEmpty<T['relations']['filters']> extends false ? WhereRelationFilters<T['relations']['filters'], T['engine']> : {});
123
- export type WhereOperators = keyof (WhereNegate<any> & WhereEqual<any> & WhereGreaterThan<any> & WhereGreaterThanOrEqual<any> & WhereLessThan<any> & WhereLessThanOrEqual<any> & WhereIn<any> & WhereBetween<any> & WhereIsMissing & WhereIsNull & WhereStartsWith<never> & WhereContains<any, never>);
124
- type WhereNegate<V> = {
122
+ export type WhereOperators = keyof (WhereNegate<any, never> & WhereEqual<any, never> & WhereGreaterThan<any> & WhereGreaterThanOrEqual<any> & WhereLessThan<any> & WhereLessThanOrEqual<any> & WhereIn<any> & WhereBetween<any> & WhereIsMissing & WhereIsNull & WhereStartsWith<never> & WhereContains<any, never>);
123
+ type WhereNegate<V, E extends DatabaseEngine> = (V extends string ? InsensitiveUtils.Input<E> : {}) & {
125
124
  not: V;
126
125
  };
127
- type WhereEqual<V> = {
126
+ type WhereEqual<V, E extends DatabaseEngine> = (V extends string ? InsensitiveUtils.Input<E> : {}) & {
128
127
  equal: V;
129
128
  };
130
129
  type WhereGreaterThan<V> = {
@@ -44,7 +44,7 @@ export interface Table<T extends TableMetadata> {
44
44
  *
45
45
  * @param query Input query.
46
46
  */
47
- insertOne<S extends Query.SelectInput<T> = never>(query: Query.InsertOneInput<S, T>): Promise<Query.InsertOneResult<S, T>>;
47
+ insertOne<S extends Query.SelectInput<T>>(query: Query.InsertOneInput<S, T>): Promise<Query.InsertOneResult<S, T>>;
48
48
  /**
49
49
  * Find one database record.
50
50
  *
@@ -56,19 +56,19 @@ export interface Table<T extends TableMetadata> {
56
56
  *
57
57
  * @param query Input query.
58
58
  */
59
- updateOne<S extends Query.SelectInput<T> = never>(query: Query.UpdateOneInput<S, T>): Promise<Query.UpdateOneResult<S, T>>;
59
+ updateOne<S extends Query.SelectInput<T>>(query: Query.UpdateOneInput<S, T>): Promise<Query.UpdateOneResult<S, T>>;
60
60
  /**
61
61
  * Try to insert a database record, and if it already exists, perform an update instead.
62
62
  *
63
63
  * @param query Input query.
64
64
  */
65
- upsertOne<S extends Query.SelectInput<T> = never>(query: Query.UpsertOneInput<S, T>): Promise<Query.UpsertOneResult<S, T>>;
65
+ upsertOne<S extends Query.SelectInput<T>>(query: Query.UpsertOneInput<S, T>): Promise<Query.UpsertOneResult<S, T>>;
66
66
  /**
67
67
  * Delete one database record.
68
68
  *
69
69
  * @param query Input query.
70
70
  */
71
- deleteOne<S extends Query.SelectInput<T> = never>(query: Query.DeleteOneInput<S, T>): Promise<Query.DeleteOneResult<S, T>>;
71
+ deleteOne<S extends Query.SelectInput<T>>(query: Query.DeleteOneInput<S, T>): Promise<Query.DeleteOneResult<S, T>>;
72
72
  /**
73
73
  * Insert multiple records into the database.
74
74
  *
@@ -80,19 +80,19 @@ export interface Table<T extends TableMetadata> {
80
80
  *
81
81
  * @param query Input query.
82
82
  */
83
- findMany<S extends Query.SelectInput<T>, C extends boolean = false>(query: Query.FindManyInput<S, T, C>): Promise<Query.FindManyResult<S, T, C>>;
83
+ findMany<S extends Query.SelectInput<T>, C extends boolean>(query: Query.FindManyInput<S, C, T>): Promise<Query.FindManyResult<S, C, T>>;
84
84
  /**
85
85
  * Update multiple database records.
86
86
  *
87
87
  * @param query Input query.
88
88
  */
89
- updateMany<S extends Query.SelectInput<T> = never>(query: Query.UpdateManyInput<S, T>): Promise<Query.UpdateManyResult<S, T>>;
89
+ updateMany<S extends Query.SelectInput<T>>(query: Query.UpdateManyInput<S, T>): Promise<Query.UpdateManyResult<S, T>>;
90
90
  /**
91
91
  * Delete multiple database records.
92
92
  *
93
93
  * @param query Input query.
94
94
  */
95
- deleteMany<S extends Query.SelectInput<T> = never>(query: Query.DeleteManyInput<S, T>): Promise<Query.DeleteManyResult<S, T>>;
95
+ deleteMany<S extends Query.SelectInput<T>>(query: Query.DeleteManyInput<S, T>): Promise<Query.DeleteManyResult<S, T>>;
96
96
  /**
97
97
  * Count database records.
98
98
  *
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ez4/database",
3
3
  "description": "EZ4: Components to build database services",
4
- "version": "0.25.0",
4
+ "version": "0.26.0",
5
5
  "author": "Silas B.",
6
6
  "license": "MIT",
7
7
  "type": "module",
@@ -40,13 +40,13 @@
40
40
  "test:types": "npm run build && tsc -p tsconfig.test.json",
41
41
  "local:publish": "npm run build && npm run clean:registry && npm publish --registry http://localhost:4873",
42
42
  "clean:registry": "rm -rf ../../.registry/@ez4/database",
43
- "live:publish": "npm publish --access public"
43
+ "live:publish": "npm run build && npm publish --access public"
44
44
  },
45
45
  "dependencies": {
46
- "@ez4/common": "^0.25.0",
47
- "@ez4/project": "^0.25.0",
48
- "@ez4/reflection": "^0.25.0",
49
- "@ez4/schema": "^0.25.0",
50
- "@ez4/utils": "^0.25.0"
46
+ "@ez4/common": "^0.26.0",
47
+ "@ez4/project": "^0.26.0",
48
+ "@ez4/reflection": "^0.26.0",
49
+ "@ez4/schema": "^0.26.0",
50
+ "@ez4/utils": "^0.26.0"
51
51
  }
52
52
  }