linkgress-orm 0.0.3 → 0.1.1
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/README.md +3 -3
- package/dist/entity/db-column.d.ts +38 -1
- package/dist/entity/db-column.d.ts.map +1 -1
- package/dist/entity/db-column.js.map +1 -1
- package/dist/entity/db-context.d.ts +429 -50
- package/dist/entity/db-context.d.ts.map +1 -1
- package/dist/entity/db-context.js +884 -203
- package/dist/entity/db-context.js.map +1 -1
- package/dist/entity/entity-base.d.ts +8 -0
- package/dist/entity/entity-base.d.ts.map +1 -1
- package/dist/entity/entity-base.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/query/collection-strategy.factory.d.ts.map +1 -1
- package/dist/query/collection-strategy.factory.js +7 -3
- package/dist/query/collection-strategy.factory.js.map +1 -1
- package/dist/query/collection-strategy.interface.d.ts +12 -6
- package/dist/query/collection-strategy.interface.d.ts.map +1 -1
- package/dist/query/conditions.d.ts +134 -23
- package/dist/query/conditions.d.ts.map +1 -1
- package/dist/query/conditions.js +58 -0
- package/dist/query/conditions.js.map +1 -1
- package/dist/query/cte-builder.d.ts +24 -5
- package/dist/query/cte-builder.d.ts.map +1 -1
- package/dist/query/cte-builder.js +45 -7
- package/dist/query/cte-builder.js.map +1 -1
- package/dist/query/grouped-query.d.ts +196 -8
- package/dist/query/grouped-query.d.ts.map +1 -1
- package/dist/query/grouped-query.js +586 -54
- package/dist/query/grouped-query.js.map +1 -1
- package/dist/query/join-builder.d.ts +5 -4
- package/dist/query/join-builder.d.ts.map +1 -1
- package/dist/query/join-builder.js +21 -47
- package/dist/query/join-builder.js.map +1 -1
- package/dist/query/query-builder.d.ts +118 -20
- package/dist/query/query-builder.d.ts.map +1 -1
- package/dist/query/query-builder.js +511 -280
- package/dist/query/query-builder.js.map +1 -1
- package/dist/query/query-utils.d.ts +45 -0
- package/dist/query/query-utils.d.ts.map +1 -0
- package/dist/query/query-utils.js +103 -0
- package/dist/query/query-utils.js.map +1 -0
- package/dist/query/sql-utils.d.ts +83 -0
- package/dist/query/sql-utils.d.ts.map +1 -0
- package/dist/query/sql-utils.js +218 -0
- package/dist/query/sql-utils.js.map +1 -0
- package/dist/query/strategies/cte-collection-strategy.d.ts +85 -0
- package/dist/query/strategies/cte-collection-strategy.d.ts.map +1 -0
- package/dist/query/strategies/cte-collection-strategy.js +338 -0
- package/dist/query/strategies/cte-collection-strategy.js.map +1 -0
- package/dist/query/strategies/lateral-collection-strategy.d.ts +59 -0
- package/dist/query/strategies/lateral-collection-strategy.d.ts.map +1 -0
- package/dist/query/strategies/lateral-collection-strategy.js +243 -0
- package/dist/query/strategies/lateral-collection-strategy.js.map +1 -0
- package/dist/query/strategies/temptable-collection-strategy.d.ts +21 -0
- package/dist/query/strategies/temptable-collection-strategy.d.ts.map +1 -1
- package/dist/query/strategies/temptable-collection-strategy.js +160 -38
- package/dist/query/strategies/temptable-collection-strategy.js.map +1 -1
- package/dist/query/subquery.d.ts +24 -1
- package/dist/query/subquery.d.ts.map +1 -1
- package/dist/query/subquery.js +38 -2
- package/dist/query/subquery.js.map +1 -1
- package/dist/schema/table-builder.d.ts +16 -0
- package/dist/schema/table-builder.d.ts.map +1 -1
- package/dist/schema/table-builder.js +23 -1
- package/dist/schema/table-builder.js.map +1 -1
- package/package.json +1 -1
- package/dist/query/strategies/jsonb-collection-strategy.d.ts +0 -51
- package/dist/query/strategies/jsonb-collection-strategy.d.ts.map +0 -1
- package/dist/query/strategies/jsonb-collection-strategy.js +0 -210
- package/dist/query/strategies/jsonb-collection-strategy.js.map +0 -1
package/README.md
CHANGED
|
@@ -9,14 +9,14 @@ A type-safe ORM for PostgreSQL and TypeScript with automatic type inference and
|
|
|
9
9
|
|
|
10
10
|
**LINQ-Inspired Query Syntax:** The query API is designed to feel familiar to developers coming from C# LINQ, with chainable methods like `select()`, `where()`, `orderBy()`, and `groupBy()`. You also get magic SQL string interpolation for when you need raw SQL power without sacrificing type safety.
|
|
11
11
|
|
|
12
|
-
**PostgreSQL-First Philosophy:** While other ORMs aim high and try to support all platforms, Linkgress is built exclusively for PostgreSQL. This allows it to leverage PostgreSQL's advanced features to the maximum—particularly in how collections and aggregations are retrieved using CTEs, JSON aggregations, and native PostgreSQL optimizations.
|
|
12
|
+
**PostgreSQL-First Philosophy:** While other ORMs aim high and try to support all platforms, Linkgress is built exclusively for PostgreSQL. This allows it to leverage PostgreSQL's advanced features to the maximum—particularly in how collections and aggregations are retrieved using CTEs, LATERAL joins, JSON aggregations, and native PostgreSQL optimizations.
|
|
13
13
|
|
|
14
14
|
## Features
|
|
15
15
|
|
|
16
16
|
- **Entity-First Approach** - Define entities with `DbColumn<T>`, no decorators needed
|
|
17
17
|
- **Fluent Configuration API** - Intuitive `DbContext` pattern with method chaining
|
|
18
18
|
- **Automatic Type Inference** - Full TypeScript support without manual type annotations
|
|
19
|
-
- **Nested Collection Queries** - Query one-to-many relationships with
|
|
19
|
+
- **Nested Collection Queries** - Query one-to-many relationships with CTE, LATERAL, or temp table strategies
|
|
20
20
|
- **Type-Safe Aggregations** - `count()`, `sum()`, `max()`, `min()` return proper types
|
|
21
21
|
- **Powerful Filtering** - Type-checked query conditions
|
|
22
22
|
- **Transaction Support** - Safe, type-checked transactions
|
|
@@ -168,7 +168,7 @@ Array<{
|
|
|
168
168
|
- **[Insert/Update/Upsert/BULK](./docs/guides/insert-update-guide.md)** - Insert, update, delete, and bulk operations
|
|
169
169
|
|
|
170
170
|
### Advanced
|
|
171
|
-
- **[Collection Strategies](./docs/collection-strategies.md)** -
|
|
171
|
+
- **[Collection Strategies](./docs/collection-strategies.md)** - CTE, LATERAL, and temp table strategies for one-to-many queries
|
|
172
172
|
- **[Subqueries](./docs/guides/subquery-guide.md)** - Using subqueries in your queries
|
|
173
173
|
- **[Custom Types](./docs/guides/schema-configuration.md#custom-types)** - Create custom type mappers
|
|
174
174
|
|
|
@@ -22,10 +22,47 @@ export declare class DbColumn<TValue> {
|
|
|
22
22
|
*/
|
|
23
23
|
valueOf(): TValue;
|
|
24
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Type helper to detect if a type is a class instance (has prototype methods)
|
|
27
|
+
* vs a plain data object. See conditions.ts for detailed explanation.
|
|
28
|
+
* Excludes DbColumn and SqlFragment which have valueOf but are not value types.
|
|
29
|
+
*/
|
|
30
|
+
type IsClassInstance<T> = T extends {
|
|
31
|
+
__isDbColumn: true;
|
|
32
|
+
} ? false : T extends {
|
|
33
|
+
mapWith: any;
|
|
34
|
+
as: any;
|
|
35
|
+
buildSql: any;
|
|
36
|
+
} ? false : T extends {
|
|
37
|
+
valueOf(): infer V;
|
|
38
|
+
} ? V extends T ? true : V extends number | string | boolean | bigint | symbol ? true : false : false;
|
|
39
|
+
/**
|
|
40
|
+
* Check for types with known class method signatures
|
|
41
|
+
*/
|
|
42
|
+
type HasClassMethods<T> = T extends {
|
|
43
|
+
getTime(): number;
|
|
44
|
+
} ? true : T extends {
|
|
45
|
+
size: number;
|
|
46
|
+
has(value: any): boolean;
|
|
47
|
+
} ? true : T extends {
|
|
48
|
+
byteLength: number;
|
|
49
|
+
} ? true : T extends {
|
|
50
|
+
then(onfulfilled?: any): any;
|
|
51
|
+
} ? true : T extends {
|
|
52
|
+
message: string;
|
|
53
|
+
name: string;
|
|
54
|
+
} ? true : T extends {
|
|
55
|
+
exec(string: string): any;
|
|
56
|
+
} ? true : false;
|
|
57
|
+
/**
|
|
58
|
+
* Combined check for value types that should not be recursively processed
|
|
59
|
+
*/
|
|
60
|
+
type IsValueType<T> = IsClassInstance<T> extends true ? true : HasClassMethods<T> extends true ? true : false;
|
|
25
61
|
/**
|
|
26
62
|
* Type helper to unwrap DbColumn types to their underlying values
|
|
63
|
+
* Preserves class instances (Date, Map, Set, Temporal, etc.) as-is
|
|
27
64
|
*/
|
|
28
|
-
export type UnwrapDbColumns<T> = T extends DbColumn<infer V> ? V : T extends object ? {
|
|
65
|
+
export type UnwrapDbColumns<T> = T extends DbColumn<infer V> ? V : T extends object ? IsValueType<T> extends true ? T : {
|
|
29
66
|
[K in keyof T]: T[K] extends DbColumn<infer V> ? V : T[K] extends (infer U)[] | undefined ? U extends DbEntity ? UnwrapDbColumns<U>[] : T[K] : T[K] extends DbEntity | undefined ? UnwrapDbColumns<NonNullable<T[K]>> : T[K];
|
|
30
67
|
} : T;
|
|
31
68
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-column.d.ts","sourceRoot":"","sources":["../../src/entity/db-column.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,qBAAa,QAAQ,CAAC,MAAM;IAC1B,gBAAgB;IAChB,QAAQ,CAAC,YAAY,QAAQ;IAE7B,gBAAgB;IAChB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,gBAAgB;IAChB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAEhC,gBAAgB;IAChB,QAAQ,CAAC,WAAW,EAAG,MAAM,CAAC;;IAG5B,gBAAgB;IAChB,UAAU,EAAE,MAAM;IAMpB;;;OAGG;IACH,OAAO,IAAI,MAAM;CAGlB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GACxD,CAAC,GACD,CAAC,SAAS,MAAM,GAChB;KACG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GAC1C,CAAC,GACD,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,SAAS,GACpC,CAAC,SAAS,QAAQ,GAChB,eAAe,CAAC,CAAC,CAAC,EAAE,GACpB,CAAC,CAAC,CAAC,CAAC,GACN,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAAG,SAAS,GACjC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAClC,CAAC,CAAC,CAAC,CAAC;CACT,
|
|
1
|
+
{"version":3,"file":"db-column.d.ts","sourceRoot":"","sources":["../../src/entity/db-column.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-column.js","sourceRoot":"","sources":["../../src/entity/db-column.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"db-column.js","sourceRoot":"","sources":["../../src/entity/db-column.ts"],"names":[],"mappings":";;;AA8IA,gCAEC;AAhJD;;;;;GAKG;AACH,MAAa,QAAQ;IAanB;IACE,gBAAgB;IAChB,UAAkB;QAdpB,gBAAgB;QACP,iBAAY,GAAG,IAAI,CAAC;QAe3B,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,OAAO;QACL,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;CACF;AA5BD,4BA4BC;AAyGD;;GAEG;AACH,SAAgB,UAAU,CAAC,KAAU;IACnC,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC;AAC3E,CAAC"}
|