@ez4/database 0.18.0 → 0.20.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.
- package/dist/library.cjs +106 -102
- package/dist/library.mjs +110 -106
- package/dist/main.cjs +8 -6
- package/dist/main.d.ts +7 -5
- package/dist/main.mjs +4 -3
- package/dist/services/client.d.ts +4 -4
- package/dist/services/database.d.ts +1 -1
- package/dist/services/engine.d.ts +46 -16
- package/dist/services/insensitive.d.ts +19 -0
- package/dist/services/order.d.ts +31 -0
- package/dist/services/pagination.d.ts +45 -0
- package/dist/services/parameters.d.ts +12 -12
- package/dist/services/query.d.ts +121 -122
- package/dist/services/relations.d.ts +10 -10
- package/dist/services/table.d.ts +26 -11
- package/dist/services/transaction.d.ts +26 -21
- package/dist/triggers/service.d.ts +1 -1
- package/dist/types/engine.d.ts +10 -3
- package/dist/types/stream.d.ts +1 -1
- package/package.json +6 -6
package/dist/services/table.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import type { RelationMetadata, RelationTables } from './relations.js';
|
|
|
3
3
|
import type { IndexedTables } from './indexes.js';
|
|
4
4
|
import type { TableSchemas } from './schemas.js';
|
|
5
5
|
import type { Database } from './database.js';
|
|
6
|
+
import type { DatabaseEngine } from './engine.js';
|
|
6
7
|
import type { Query } from './query.js';
|
|
7
8
|
/**
|
|
8
9
|
* Given an indexed table `T` and a property `P`, it returns all the indexes corresponding
|
|
@@ -18,42 +19,56 @@ export type TableRelation<P, T extends AnyObject> = PropertyExists<P, T> extends
|
|
|
18
19
|
* Given a database service `T`, it returns all table clients.
|
|
19
20
|
*/
|
|
20
21
|
export type TableClients<T extends Database.Service> = {
|
|
21
|
-
[P in keyof TableSchemas<T>]: TableSchemas<T>[P] extends Database.Schema ? Table<
|
|
22
|
+
[P in keyof TableSchemas<T>]: TableSchemas<T>[P] extends Database.Schema ? Table<{
|
|
23
|
+
schema: TableSchemas<T>[P];
|
|
24
|
+
indexes: TableIndex<P, IndexedTables<T>>;
|
|
25
|
+
relations: TableRelation<P, RelationTables<T>>;
|
|
26
|
+
engine: T['engine'];
|
|
27
|
+
}> : never;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Internal table metadata.
|
|
31
|
+
*/
|
|
32
|
+
export type TableMetadata = {
|
|
33
|
+
schema: Database.Schema;
|
|
34
|
+
indexes: Database.Indexes;
|
|
35
|
+
relations: RelationMetadata;
|
|
36
|
+
engine: DatabaseEngine;
|
|
22
37
|
};
|
|
23
38
|
/**
|
|
24
39
|
* Table client.
|
|
25
40
|
*/
|
|
26
|
-
export interface Table<T extends
|
|
41
|
+
export interface Table<T extends TableMetadata> {
|
|
27
42
|
/**
|
|
28
43
|
* Insert one record into the database.
|
|
29
44
|
*
|
|
30
45
|
* @param query Input query.
|
|
31
46
|
*/
|
|
32
|
-
insertOne<S extends Query.SelectInput<T
|
|
47
|
+
insertOne<S extends Query.SelectInput<T> = never>(query: Query.InsertOneInput<S, T>): Promise<Query.InsertOneResult<S, T>>;
|
|
33
48
|
/**
|
|
34
49
|
* Find one database record.
|
|
35
50
|
*
|
|
36
51
|
* @param query Input query.
|
|
37
52
|
*/
|
|
38
|
-
findOne<S extends Query.SelectInput<T
|
|
53
|
+
findOne<S extends Query.SelectInput<T>>(query: Query.FindOneInput<S, T>): Promise<Query.FindOneResult<S, T>>;
|
|
39
54
|
/**
|
|
40
55
|
* Update one database record.
|
|
41
56
|
*
|
|
42
57
|
* @param query Input query.
|
|
43
58
|
*/
|
|
44
|
-
updateOne<S extends Query.SelectInput<T
|
|
59
|
+
updateOne<S extends Query.SelectInput<T> = never>(query: Query.UpdateOneInput<S, T>): Promise<Query.UpdateOneResult<S, T>>;
|
|
45
60
|
/**
|
|
46
61
|
* Try to insert a database record, and if it already exists, perform an update instead.
|
|
47
62
|
*
|
|
48
63
|
* @param query Input query.
|
|
49
64
|
*/
|
|
50
|
-
upsertOne<S extends Query.SelectInput<T
|
|
65
|
+
upsertOne<S extends Query.SelectInput<T> = never>(query: Query.UpsertOneInput<S, T>): Promise<Query.UpsertOneResult<S, T>>;
|
|
51
66
|
/**
|
|
52
67
|
* Delete one database record.
|
|
53
68
|
*
|
|
54
69
|
* @param query Input query.
|
|
55
70
|
*/
|
|
56
|
-
deleteOne<S extends Query.SelectInput<T
|
|
71
|
+
deleteOne<S extends Query.SelectInput<T> = never>(query: Query.DeleteOneInput<S, T>): Promise<Query.DeleteOneResult<S, T>>;
|
|
57
72
|
/**
|
|
58
73
|
* Insert multiple records into the database.
|
|
59
74
|
*
|
|
@@ -65,23 +80,23 @@ export interface Table<T extends Database.Schema, I extends Database.Indexes, R
|
|
|
65
80
|
*
|
|
66
81
|
* @param query Input query.
|
|
67
82
|
*/
|
|
68
|
-
findMany<S extends Query.SelectInput<T
|
|
83
|
+
findMany<S extends Query.SelectInput<T>, C extends boolean = false>(query: Query.FindManyInput<S, T, C>): Promise<Query.FindManyResult<S, T, C>>;
|
|
69
84
|
/**
|
|
70
85
|
* Update multiple database records.
|
|
71
86
|
*
|
|
72
87
|
* @param query Input query.
|
|
73
88
|
*/
|
|
74
|
-
updateMany<S extends Query.SelectInput<T
|
|
89
|
+
updateMany<S extends Query.SelectInput<T> = never>(query: Query.UpdateManyInput<S, T>): Promise<Query.UpdateManyResult<S, T>>;
|
|
75
90
|
/**
|
|
76
91
|
* Delete multiple database records.
|
|
77
92
|
*
|
|
78
93
|
* @param query Input query.
|
|
79
94
|
*/
|
|
80
|
-
deleteMany<S extends Query.SelectInput<T
|
|
95
|
+
deleteMany<S extends Query.SelectInput<T> = never>(query: Query.DeleteManyInput<S, T>): Promise<Query.DeleteManyResult<S, T>>;
|
|
81
96
|
/**
|
|
82
97
|
* Count database records.
|
|
83
98
|
*
|
|
84
99
|
* @param query Input query.
|
|
85
100
|
*/
|
|
86
|
-
count(query: Query.CountInput<T
|
|
101
|
+
count(query: Query.CountInput<T>): Promise<number>;
|
|
87
102
|
}
|
|
@@ -1,16 +1,22 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
import type { RelationMetadata, RelationTables } from './relations.js';
|
|
1
|
+
import type { TableIndex, TableMetadata, TableRelation } from './table.js';
|
|
2
|
+
import type { RelationTables } from './relations.js';
|
|
4
3
|
import type { IndexedTables } from './indexes.js';
|
|
5
|
-
import type {
|
|
4
|
+
import type { EngineUtils } from './engine.js';
|
|
6
5
|
import type { TableSchemas } from './schemas.js';
|
|
7
6
|
import type { Database } from './database.js';
|
|
8
7
|
import type { Client } from './client.js';
|
|
9
8
|
import type { Query } from './query.js';
|
|
10
9
|
/**
|
|
11
|
-
* Transaction
|
|
10
|
+
* Transaction mode.
|
|
12
11
|
*/
|
|
13
|
-
export declare
|
|
12
|
+
export declare const enum TransactionMode {
|
|
13
|
+
Interactive = "interactive",
|
|
14
|
+
Static = "static"
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Transaction utils.
|
|
18
|
+
*/
|
|
19
|
+
export declare namespace TransactionUtils {
|
|
14
20
|
/**
|
|
15
21
|
* Extract the operation result from an interactive transaction.
|
|
16
22
|
*/
|
|
@@ -18,7 +24,7 @@ export declare namespace Transaction {
|
|
|
18
24
|
/**
|
|
19
25
|
* Determines the transaction operation based on the given database service.
|
|
20
26
|
*/
|
|
21
|
-
export type Type<T extends Database.Service, R> =
|
|
27
|
+
export type Type<T extends Database.Service, R> = EngineUtils.GetTransactionMode<T> extends TransactionMode.Interactive ? StaticOperationType<T> | InteractiveOperationType<T, R> : StaticOperationType<T>;
|
|
22
28
|
/**
|
|
23
29
|
* Interactive operation type.
|
|
24
30
|
*/
|
|
@@ -27,23 +33,22 @@ export declare namespace Transaction {
|
|
|
27
33
|
* Static operation type.
|
|
28
34
|
*/
|
|
29
35
|
export type StaticOperationType<T extends Database.Service> = {
|
|
30
|
-
[P in keyof TableSchemas<T>]?: (TableSchemas<T>[P] extends Database.Schema ? AnyOperationType<
|
|
36
|
+
[P in keyof TableSchemas<T>]?: (TableSchemas<T>[P] extends Database.Schema ? AnyOperationType<{
|
|
37
|
+
schema: TableSchemas<T>[P];
|
|
38
|
+
indexes: TableIndex<P, IndexedTables<T>>;
|
|
39
|
+
relations: TableRelation<P, RelationTables<T>>;
|
|
40
|
+
engine: T['engine'];
|
|
41
|
+
}> : never)[];
|
|
31
42
|
};
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
type EngineTransactionType<T extends Database.Service> = T['engine'] extends {
|
|
36
|
-
transaction: infer O;
|
|
37
|
-
} ? O : never;
|
|
38
|
-
type AnyOperationType<T extends Database.Schema, I extends Database.Indexes, R extends RelationMetadata> = InsertOperationType<T, R> | UpdateOperationType<T, I, R> | DeleteOperationType<T, I, R>;
|
|
39
|
-
type InsertOperationType<T extends Database.Schema, R extends RelationMetadata> = {
|
|
40
|
-
insert: Omit<Query.InsertOneInput<T, Query.SelectInput<T, R>, R>, 'select'>;
|
|
43
|
+
type AnyOperationType<T extends TableMetadata> = InsertOperationType<T> | UpdateOperationType<T> | DeleteOperationType<T>;
|
|
44
|
+
type InsertOperationType<T extends TableMetadata> = {
|
|
45
|
+
insert: Omit<Query.InsertOneInput<Query.SelectInput<T>, T>, 'select'>;
|
|
41
46
|
};
|
|
42
|
-
type UpdateOperationType<T extends
|
|
43
|
-
update: Omit<Query.UpdateOneInput<
|
|
47
|
+
type UpdateOperationType<T extends TableMetadata> = {
|
|
48
|
+
update: Omit<Query.UpdateOneInput<Query.SelectInput<T>, T>, 'select' | 'include'>;
|
|
44
49
|
};
|
|
45
|
-
type DeleteOperationType<T extends
|
|
46
|
-
delete: Omit<Query.DeleteOneInput<
|
|
50
|
+
type DeleteOperationType<T extends TableMetadata> = {
|
|
51
|
+
delete: Omit<Query.DeleteOneInput<Query.SelectInput<T>, T>, 'select' | 'include'>;
|
|
47
52
|
};
|
|
48
53
|
export {};
|
|
49
54
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { TypeClass } from '@ez4/reflection';
|
|
2
|
-
export declare const getLinkedService: (
|
|
2
|
+
export declare const getLinkedService: (declaration: TypeClass) => string | null;
|
package/dist/types/engine.d.ts
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { ParametersMode } from '../services/parameters.js';
|
|
2
|
+
import { TransactionMode } from '../services/transaction.js';
|
|
3
|
+
import { InsensitiveMode } from '../services/insensitive.js';
|
|
4
|
+
import { PaginationMode } from '../services/pagination.js';
|
|
5
|
+
import { OrderMode } from '../services/order.js';
|
|
2
6
|
export type DatabaseEngine = {
|
|
3
|
-
|
|
4
|
-
|
|
7
|
+
parametersMode: ParametersMode;
|
|
8
|
+
transactionMode: TransactionMode;
|
|
9
|
+
insensitiveMode: InsensitiveMode;
|
|
10
|
+
paginationMode: PaginationMode;
|
|
11
|
+
orderMode: OrderMode;
|
|
5
12
|
name: string;
|
|
6
13
|
};
|
package/dist/types/stream.d.ts
CHANGED
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.
|
|
4
|
+
"version": "0.20.0",
|
|
5
5
|
"author": "Silas B.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|
|
@@ -42,10 +42,10 @@
|
|
|
42
42
|
"live:publish": "npm run test && npm publish --access public"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@ez4/common": "^0.
|
|
46
|
-
"@ez4/project": "^0.
|
|
47
|
-
"@ez4/reflection": "^0.
|
|
48
|
-
"@ez4/schema": "^0.
|
|
49
|
-
"@ez4/utils": "^0.
|
|
45
|
+
"@ez4/common": "^0.20.0",
|
|
46
|
+
"@ez4/project": "^0.20.0",
|
|
47
|
+
"@ez4/reflection": "^0.20.0",
|
|
48
|
+
"@ez4/schema": "^0.20.0",
|
|
49
|
+
"@ez4/utils": "^0.20.0"
|
|
50
50
|
}
|
|
51
51
|
}
|