linkgress-orm 0.0.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.
Files changed (147) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +196 -0
  3. package/dist/database/database-client.interface.d.ts +45 -0
  4. package/dist/database/database-client.interface.d.ts.map +1 -0
  5. package/dist/database/database-client.interface.js +20 -0
  6. package/dist/database/database-client.interface.js.map +1 -0
  7. package/dist/database/index.d.ts +5 -0
  8. package/dist/database/index.d.ts.map +1 -0
  9. package/dist/database/index.js +10 -0
  10. package/dist/database/index.js.map +1 -0
  11. package/dist/database/pg-client.d.ts +30 -0
  12. package/dist/database/pg-client.d.ts.map +1 -0
  13. package/dist/database/pg-client.js +76 -0
  14. package/dist/database/pg-client.js.map +1 -0
  15. package/dist/database/postgres-client.d.ts +44 -0
  16. package/dist/database/postgres-client.d.ts.map +1 -0
  17. package/dist/database/postgres-client.js +111 -0
  18. package/dist/database/postgres-client.js.map +1 -0
  19. package/dist/database/types.d.ts +200 -0
  20. package/dist/database/types.d.ts.map +1 -0
  21. package/dist/database/types.js +8 -0
  22. package/dist/database/types.js.map +1 -0
  23. package/dist/entity/base-entity.d.ts +21 -0
  24. package/dist/entity/base-entity.d.ts.map +1 -0
  25. package/dist/entity/base-entity.js +27 -0
  26. package/dist/entity/base-entity.js.map +1 -0
  27. package/dist/entity/db-column.d.ts +61 -0
  28. package/dist/entity/db-column.d.ts.map +1 -0
  29. package/dist/entity/db-column.js +35 -0
  30. package/dist/entity/db-column.js.map +1 -0
  31. package/dist/entity/db-context.d.ts +665 -0
  32. package/dist/entity/db-context.d.ts.map +1 -0
  33. package/dist/entity/db-context.js +1463 -0
  34. package/dist/entity/db-context.js.map +1 -0
  35. package/dist/entity/entity-base.d.ts +76 -0
  36. package/dist/entity/entity-base.d.ts.map +1 -0
  37. package/dist/entity/entity-base.js +42 -0
  38. package/dist/entity/entity-base.js.map +1 -0
  39. package/dist/entity/entity-builder.d.ts +171 -0
  40. package/dist/entity/entity-builder.d.ts.map +1 -0
  41. package/dist/entity/entity-builder.js +376 -0
  42. package/dist/entity/entity-builder.js.map +1 -0
  43. package/dist/entity/model-config.d.ts +18 -0
  44. package/dist/entity/model-config.d.ts.map +1 -0
  45. package/dist/entity/model-config.js +157 -0
  46. package/dist/entity/model-config.js.map +1 -0
  47. package/dist/index.d.ts +27 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +142 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/migration/db-schema-manager.d.ts +228 -0
  52. package/dist/migration/db-schema-manager.d.ts.map +1 -0
  53. package/dist/migration/db-schema-manager.js +1055 -0
  54. package/dist/migration/db-schema-manager.js.map +1 -0
  55. package/dist/migration/enum-migrator.d.ts +29 -0
  56. package/dist/migration/enum-migrator.d.ts.map +1 -0
  57. package/dist/migration/enum-migrator.js +137 -0
  58. package/dist/migration/enum-migrator.js.map +1 -0
  59. package/dist/query/collection-strategy.factory.d.ts +16 -0
  60. package/dist/query/collection-strategy.factory.d.ts.map +1 -0
  61. package/dist/query/collection-strategy.factory.js +37 -0
  62. package/dist/query/collection-strategy.factory.js.map +1 -0
  63. package/dist/query/collection-strategy.interface.d.ts +146 -0
  64. package/dist/query/collection-strategy.interface.d.ts.map +1 -0
  65. package/dist/query/collection-strategy.interface.js +3 -0
  66. package/dist/query/collection-strategy.interface.js.map +1 -0
  67. package/dist/query/conditions.d.ts +222 -0
  68. package/dist/query/conditions.d.ts.map +1 -0
  69. package/dist/query/conditions.js +446 -0
  70. package/dist/query/conditions.js.map +1 -0
  71. package/dist/query/cte-builder.d.ts +95 -0
  72. package/dist/query/cte-builder.d.ts.map +1 -0
  73. package/dist/query/cte-builder.js +172 -0
  74. package/dist/query/cte-builder.js.map +1 -0
  75. package/dist/query/grouped-query.d.ts +186 -0
  76. package/dist/query/grouped-query.d.ts.map +1 -0
  77. package/dist/query/grouped-query.js +588 -0
  78. package/dist/query/grouped-query.js.map +1 -0
  79. package/dist/query/join-builder.d.ts +106 -0
  80. package/dist/query/join-builder.d.ts.map +1 -0
  81. package/dist/query/join-builder.js +275 -0
  82. package/dist/query/join-builder.js.map +1 -0
  83. package/dist/query/query-builder.d.ts +543 -0
  84. package/dist/query/query-builder.d.ts.map +1 -0
  85. package/dist/query/query-builder.js +2649 -0
  86. package/dist/query/query-builder.js.map +1 -0
  87. package/dist/query/strategies/jsonb-collection-strategy.d.ts +51 -0
  88. package/dist/query/strategies/jsonb-collection-strategy.d.ts.map +1 -0
  89. package/dist/query/strategies/jsonb-collection-strategy.js +210 -0
  90. package/dist/query/strategies/jsonb-collection-strategy.js.map +1 -0
  91. package/dist/query/strategies/temptable-collection-strategy.d.ts +95 -0
  92. package/dist/query/strategies/temptable-collection-strategy.d.ts.map +1 -0
  93. package/dist/query/strategies/temptable-collection-strategy.js +456 -0
  94. package/dist/query/strategies/temptable-collection-strategy.js.map +1 -0
  95. package/dist/query/subquery.d.ts +152 -0
  96. package/dist/query/subquery.d.ts.map +1 -0
  97. package/dist/query/subquery.js +206 -0
  98. package/dist/query/subquery.js.map +1 -0
  99. package/dist/schema/column-builder.d.ts +127 -0
  100. package/dist/schema/column-builder.d.ts.map +1 -0
  101. package/dist/schema/column-builder.js +184 -0
  102. package/dist/schema/column-builder.js.map +1 -0
  103. package/dist/schema/inference.d.ts +26 -0
  104. package/dist/schema/inference.d.ts.map +1 -0
  105. package/dist/schema/inference.js +3 -0
  106. package/dist/schema/inference.js.map +1 -0
  107. package/dist/schema/navigation.d.ts +215 -0
  108. package/dist/schema/navigation.d.ts.map +1 -0
  109. package/dist/schema/navigation.js +233 -0
  110. package/dist/schema/navigation.js.map +1 -0
  111. package/dist/schema/row-type.d.ts +26 -0
  112. package/dist/schema/row-type.d.ts.map +1 -0
  113. package/dist/schema/row-type.js +3 -0
  114. package/dist/schema/row-type.js.map +1 -0
  115. package/dist/schema/sequence-builder.d.ts +87 -0
  116. package/dist/schema/sequence-builder.d.ts.map +1 -0
  117. package/dist/schema/sequence-builder.js +123 -0
  118. package/dist/schema/sequence-builder.js.map +1 -0
  119. package/dist/schema/table-builder.d.ts +122 -0
  120. package/dist/schema/table-builder.d.ts.map +1 -0
  121. package/dist/schema/table-builder.js +132 -0
  122. package/dist/schema/table-builder.js.map +1 -0
  123. package/dist/schema/typed-schema.d.ts +22 -0
  124. package/dist/schema/typed-schema.d.ts.map +1 -0
  125. package/dist/schema/typed-schema.js +28 -0
  126. package/dist/schema/typed-schema.js.map +1 -0
  127. package/dist/types/column-types.d.ts +20 -0
  128. package/dist/types/column-types.d.ts.map +1 -0
  129. package/dist/types/column-types.js +14 -0
  130. package/dist/types/column-types.js.map +1 -0
  131. package/dist/types/custom-types.d.ts +85 -0
  132. package/dist/types/custom-types.d.ts.map +1 -0
  133. package/dist/types/custom-types.js +132 -0
  134. package/dist/types/custom-types.js.map +1 -0
  135. package/dist/types/enum-builder.d.ts +31 -0
  136. package/dist/types/enum-builder.d.ts.map +1 -0
  137. package/dist/types/enum-builder.js +46 -0
  138. package/dist/types/enum-builder.js.map +1 -0
  139. package/dist/types/metadata.d.ts +67 -0
  140. package/dist/types/metadata.d.ts.map +1 -0
  141. package/dist/types/metadata.js +57 -0
  142. package/dist/types/metadata.js.map +1 -0
  143. package/dist/types/type-mapper.d.ts +49 -0
  144. package/dist/types/type-mapper.d.ts.map +1 -0
  145. package/dist/types/type-mapper.js +49 -0
  146. package/dist/types/type-mapper.js.map +1 -0
  147. package/package.json +77 -0
package/dist/index.js ADDED
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Subquery = exports.sql = exports.not = exports.or = exports.and = exports.between = exports.isNotNull = exports.isNull = exports.notInArray = exports.inArray = exports.ilike = exports.like = exports.lte = exports.lt = exports.gte = exports.gt = exports.ne = exports.eq = exports.SqlFragment = exports.ConditionBuilder = exports.JoinQueryBuilder = exports.GroupedSelectQueryBuilder = exports.GroupedQueryBuilder = exports.CollectionQueryBuilder = exports.SelectQueryBuilder = exports.QueryBuilder = exports.EnumTypeRegistry = exports.pgEnum = exports.enumColumn = exports.bytea = exports.jsonb = exports.json = exports.uuid = exports.time = exports.date = exports.timestamptz = exports.timestamp = exports.boolean = exports.text = exports.char = exports.varchar = exports.doublePrecision = exports.real = exports.numeric = exports.decimal = exports.smallint = exports.bigserial = exports.bigint = exports.serial = exports.integer = void 0;
4
+ exports.PgClient = exports.PostgresClient = exports.DatabaseClient = exports.EnumMigrator = exports.DbSchemaManager = exports.sequence = exports.SequenceBuilder = exports.DbSequence = exports.applyFromDriverArray = exports.applyFromDriver = exports.applyToDriver = exports.identityMapper = exports.createCustomType = exports.interval = exports.vector = exports.point = exports.enumType = exports.array = exports.jsonType = exports.customType = exports.CustomTypeBuilder = exports.TypeAliases = exports.EntityInsertBuilder = exports.DbEntityTable = exports.DbContext = exports.DbModelConfig = exports.HasOneNavigationBuilder = exports.HasManyNavigationBuilder = exports.EntityNavigationBuilder = exports.EntityPropertyBuilder = exports.EntityConfigBuilder = exports.isDbColumn = exports.DbColumn = exports.EntityMetadataStore = exports.DbEntity = exports.CollectionStrategyFactory = exports.isCte = exports.DbCteBuilder = exports.DbCte = exports.lteSubquery = exports.ltSubquery = exports.gteSubquery = exports.gtSubquery = exports.neSubquery = exports.eqSubquery = exports.notInSubquery = exports.inSubquery = exports.notExists = exports.exists = exports.isSubquery = void 0;
5
+ // Internal schema builders (exported for DbContext use only)
6
+ var column_builder_1 = require("./schema/column-builder");
7
+ Object.defineProperty(exports, "integer", { enumerable: true, get: function () { return column_builder_1.integer; } });
8
+ Object.defineProperty(exports, "serial", { enumerable: true, get: function () { return column_builder_1.serial; } });
9
+ Object.defineProperty(exports, "bigint", { enumerable: true, get: function () { return column_builder_1.bigint; } });
10
+ Object.defineProperty(exports, "bigserial", { enumerable: true, get: function () { return column_builder_1.bigserial; } });
11
+ Object.defineProperty(exports, "smallint", { enumerable: true, get: function () { return column_builder_1.smallint; } });
12
+ Object.defineProperty(exports, "decimal", { enumerable: true, get: function () { return column_builder_1.decimal; } });
13
+ Object.defineProperty(exports, "numeric", { enumerable: true, get: function () { return column_builder_1.numeric; } });
14
+ Object.defineProperty(exports, "real", { enumerable: true, get: function () { return column_builder_1.real; } });
15
+ Object.defineProperty(exports, "doublePrecision", { enumerable: true, get: function () { return column_builder_1.doublePrecision; } });
16
+ Object.defineProperty(exports, "varchar", { enumerable: true, get: function () { return column_builder_1.varchar; } });
17
+ Object.defineProperty(exports, "char", { enumerable: true, get: function () { return column_builder_1.char; } });
18
+ Object.defineProperty(exports, "text", { enumerable: true, get: function () { return column_builder_1.text; } });
19
+ Object.defineProperty(exports, "boolean", { enumerable: true, get: function () { return column_builder_1.boolean; } });
20
+ Object.defineProperty(exports, "timestamp", { enumerable: true, get: function () { return column_builder_1.timestamp; } });
21
+ Object.defineProperty(exports, "timestamptz", { enumerable: true, get: function () { return column_builder_1.timestamptz; } });
22
+ Object.defineProperty(exports, "date", { enumerable: true, get: function () { return column_builder_1.date; } });
23
+ Object.defineProperty(exports, "time", { enumerable: true, get: function () { return column_builder_1.time; } });
24
+ Object.defineProperty(exports, "uuid", { enumerable: true, get: function () { return column_builder_1.uuid; } });
25
+ Object.defineProperty(exports, "json", { enumerable: true, get: function () { return column_builder_1.json; } });
26
+ Object.defineProperty(exports, "jsonb", { enumerable: true, get: function () { return column_builder_1.jsonb; } });
27
+ Object.defineProperty(exports, "bytea", { enumerable: true, get: function () { return column_builder_1.bytea; } });
28
+ Object.defineProperty(exports, "enumColumn", { enumerable: true, get: function () { return column_builder_1.enumColumn; } });
29
+ // Enum types
30
+ var enum_builder_1 = require("./types/enum-builder");
31
+ Object.defineProperty(exports, "pgEnum", { enumerable: true, get: function () { return enum_builder_1.pgEnum; } });
32
+ Object.defineProperty(exports, "EnumTypeRegistry", { enumerable: true, get: function () { return enum_builder_1.EnumTypeRegistry; } });
33
+ // Query builders
34
+ var query_builder_1 = require("./query/query-builder");
35
+ Object.defineProperty(exports, "QueryBuilder", { enumerable: true, get: function () { return query_builder_1.QueryBuilder; } });
36
+ Object.defineProperty(exports, "SelectQueryBuilder", { enumerable: true, get: function () { return query_builder_1.SelectQueryBuilder; } });
37
+ Object.defineProperty(exports, "CollectionQueryBuilder", { enumerable: true, get: function () { return query_builder_1.CollectionQueryBuilder; } });
38
+ var grouped_query_1 = require("./query/grouped-query");
39
+ Object.defineProperty(exports, "GroupedQueryBuilder", { enumerable: true, get: function () { return grouped_query_1.GroupedQueryBuilder; } });
40
+ Object.defineProperty(exports, "GroupedSelectQueryBuilder", { enumerable: true, get: function () { return grouped_query_1.GroupedSelectQueryBuilder; } });
41
+ var join_builder_1 = require("./query/join-builder");
42
+ Object.defineProperty(exports, "JoinQueryBuilder", { enumerable: true, get: function () { return join_builder_1.JoinQueryBuilder; } });
43
+ // Conditions
44
+ var conditions_1 = require("./query/conditions");
45
+ Object.defineProperty(exports, "ConditionBuilder", { enumerable: true, get: function () { return conditions_1.ConditionBuilder; } });
46
+ Object.defineProperty(exports, "SqlFragment", { enumerable: true, get: function () { return conditions_1.SqlFragment; } });
47
+ Object.defineProperty(exports, "eq", { enumerable: true, get: function () { return conditions_1.eq; } });
48
+ Object.defineProperty(exports, "ne", { enumerable: true, get: function () { return conditions_1.ne; } });
49
+ Object.defineProperty(exports, "gt", { enumerable: true, get: function () { return conditions_1.gt; } });
50
+ Object.defineProperty(exports, "gte", { enumerable: true, get: function () { return conditions_1.gte; } });
51
+ Object.defineProperty(exports, "lt", { enumerable: true, get: function () { return conditions_1.lt; } });
52
+ Object.defineProperty(exports, "lte", { enumerable: true, get: function () { return conditions_1.lte; } });
53
+ Object.defineProperty(exports, "like", { enumerable: true, get: function () { return conditions_1.like; } });
54
+ Object.defineProperty(exports, "ilike", { enumerable: true, get: function () { return conditions_1.ilike; } });
55
+ Object.defineProperty(exports, "inArray", { enumerable: true, get: function () { return conditions_1.inArray; } });
56
+ Object.defineProperty(exports, "notInArray", { enumerable: true, get: function () { return conditions_1.notInArray; } });
57
+ Object.defineProperty(exports, "isNull", { enumerable: true, get: function () { return conditions_1.isNull; } });
58
+ Object.defineProperty(exports, "isNotNull", { enumerable: true, get: function () { return conditions_1.isNotNull; } });
59
+ Object.defineProperty(exports, "between", { enumerable: true, get: function () { return conditions_1.between; } });
60
+ Object.defineProperty(exports, "and", { enumerable: true, get: function () { return conditions_1.and; } });
61
+ Object.defineProperty(exports, "or", { enumerable: true, get: function () { return conditions_1.or; } });
62
+ Object.defineProperty(exports, "not", { enumerable: true, get: function () { return conditions_1.not; } });
63
+ Object.defineProperty(exports, "sql", { enumerable: true, get: function () { return conditions_1.sql; } });
64
+ // Subquery support
65
+ var subquery_1 = require("./query/subquery");
66
+ Object.defineProperty(exports, "Subquery", { enumerable: true, get: function () { return subquery_1.Subquery; } });
67
+ Object.defineProperty(exports, "isSubquery", { enumerable: true, get: function () { return subquery_1.isSubquery; } });
68
+ Object.defineProperty(exports, "exists", { enumerable: true, get: function () { return subquery_1.exists; } });
69
+ Object.defineProperty(exports, "notExists", { enumerable: true, get: function () { return subquery_1.notExists; } });
70
+ Object.defineProperty(exports, "inSubquery", { enumerable: true, get: function () { return subquery_1.inSubquery; } });
71
+ Object.defineProperty(exports, "notInSubquery", { enumerable: true, get: function () { return subquery_1.notInSubquery; } });
72
+ Object.defineProperty(exports, "eqSubquery", { enumerable: true, get: function () { return subquery_1.eqSubquery; } });
73
+ Object.defineProperty(exports, "neSubquery", { enumerable: true, get: function () { return subquery_1.neSubquery; } });
74
+ Object.defineProperty(exports, "gtSubquery", { enumerable: true, get: function () { return subquery_1.gtSubquery; } });
75
+ Object.defineProperty(exports, "gteSubquery", { enumerable: true, get: function () { return subquery_1.gteSubquery; } });
76
+ Object.defineProperty(exports, "ltSubquery", { enumerable: true, get: function () { return subquery_1.ltSubquery; } });
77
+ Object.defineProperty(exports, "lteSubquery", { enumerable: true, get: function () { return subquery_1.lteSubquery; } });
78
+ // CTE (Common Table Expression) support
79
+ var cte_builder_1 = require("./query/cte-builder");
80
+ Object.defineProperty(exports, "DbCte", { enumerable: true, get: function () { return cte_builder_1.DbCte; } });
81
+ Object.defineProperty(exports, "DbCteBuilder", { enumerable: true, get: function () { return cte_builder_1.DbCteBuilder; } });
82
+ Object.defineProperty(exports, "isCte", { enumerable: true, get: function () { return cte_builder_1.isCte; } });
83
+ var collection_strategy_factory_1 = require("./query/collection-strategy.factory");
84
+ Object.defineProperty(exports, "CollectionStrategyFactory", { enumerable: true, get: function () { return collection_strategy_factory_1.CollectionStrategyFactory; } });
85
+ // New Entity-first API with full typing
86
+ var entity_base_1 = require("./entity/entity-base");
87
+ Object.defineProperty(exports, "DbEntity", { enumerable: true, get: function () { return entity_base_1.DbEntity; } });
88
+ Object.defineProperty(exports, "EntityMetadataStore", { enumerable: true, get: function () { return entity_base_1.EntityMetadataStore; } });
89
+ var db_column_1 = require("./entity/db-column");
90
+ Object.defineProperty(exports, "DbColumn", { enumerable: true, get: function () { return db_column_1.DbColumn; } });
91
+ Object.defineProperty(exports, "isDbColumn", { enumerable: true, get: function () { return db_column_1.isDbColumn; } });
92
+ var entity_builder_1 = require("./entity/entity-builder");
93
+ Object.defineProperty(exports, "EntityConfigBuilder", { enumerable: true, get: function () { return entity_builder_1.EntityConfigBuilder; } });
94
+ Object.defineProperty(exports, "EntityPropertyBuilder", { enumerable: true, get: function () { return entity_builder_1.EntityPropertyBuilder; } });
95
+ Object.defineProperty(exports, "EntityNavigationBuilder", { enumerable: true, get: function () { return entity_builder_1.EntityNavigationBuilder; } });
96
+ Object.defineProperty(exports, "HasManyNavigationBuilder", { enumerable: true, get: function () { return entity_builder_1.HasManyNavigationBuilder; } });
97
+ Object.defineProperty(exports, "HasOneNavigationBuilder", { enumerable: true, get: function () { return entity_builder_1.HasOneNavigationBuilder; } });
98
+ var model_config_1 = require("./entity/model-config");
99
+ Object.defineProperty(exports, "DbModelConfig", { enumerable: true, get: function () { return model_config_1.DbModelConfig; } });
100
+ // Main API - DbContext (Entity-first approach)
101
+ var db_context_1 = require("./entity/db-context");
102
+ Object.defineProperty(exports, "DbContext", { enumerable: true, get: function () { return db_context_1.DatabaseContext; } });
103
+ Object.defineProperty(exports, "DbEntityTable", { enumerable: true, get: function () { return db_context_1.DbEntityTable; } });
104
+ Object.defineProperty(exports, "EntityInsertBuilder", { enumerable: true, get: function () { return db_context_1.EntityInsertBuilder; } });
105
+ // Types
106
+ var column_types_1 = require("./types/column-types");
107
+ Object.defineProperty(exports, "TypeAliases", { enumerable: true, get: function () { return column_types_1.TypeAliases; } });
108
+ // Custom types
109
+ var custom_types_1 = require("./types/custom-types");
110
+ Object.defineProperty(exports, "CustomTypeBuilder", { enumerable: true, get: function () { return custom_types_1.CustomTypeBuilder; } });
111
+ Object.defineProperty(exports, "customType", { enumerable: true, get: function () { return custom_types_1.customType; } });
112
+ Object.defineProperty(exports, "jsonType", { enumerable: true, get: function () { return custom_types_1.json; } });
113
+ Object.defineProperty(exports, "array", { enumerable: true, get: function () { return custom_types_1.array; } });
114
+ Object.defineProperty(exports, "enumType", { enumerable: true, get: function () { return custom_types_1.enumType; } });
115
+ Object.defineProperty(exports, "point", { enumerable: true, get: function () { return custom_types_1.point; } });
116
+ Object.defineProperty(exports, "vector", { enumerable: true, get: function () { return custom_types_1.vector; } });
117
+ Object.defineProperty(exports, "interval", { enumerable: true, get: function () { return custom_types_1.interval; } });
118
+ // Type mappers
119
+ var type_mapper_1 = require("./types/type-mapper");
120
+ Object.defineProperty(exports, "createCustomType", { enumerable: true, get: function () { return type_mapper_1.customType; } });
121
+ Object.defineProperty(exports, "identityMapper", { enumerable: true, get: function () { return type_mapper_1.identityMapper; } });
122
+ Object.defineProperty(exports, "applyToDriver", { enumerable: true, get: function () { return type_mapper_1.applyToDriver; } });
123
+ Object.defineProperty(exports, "applyFromDriver", { enumerable: true, get: function () { return type_mapper_1.applyFromDriver; } });
124
+ Object.defineProperty(exports, "applyFromDriverArray", { enumerable: true, get: function () { return type_mapper_1.applyFromDriverArray; } });
125
+ // Sequences
126
+ var sequence_builder_1 = require("./schema/sequence-builder");
127
+ Object.defineProperty(exports, "DbSequence", { enumerable: true, get: function () { return sequence_builder_1.DbSequence; } });
128
+ Object.defineProperty(exports, "SequenceBuilder", { enumerable: true, get: function () { return sequence_builder_1.SequenceBuilder; } });
129
+ Object.defineProperty(exports, "sequence", { enumerable: true, get: function () { return sequence_builder_1.sequence; } });
130
+ // Migration tools
131
+ var db_schema_manager_1 = require("./migration/db-schema-manager");
132
+ Object.defineProperty(exports, "DbSchemaManager", { enumerable: true, get: function () { return db_schema_manager_1.DbSchemaManager; } });
133
+ var enum_migrator_1 = require("./migration/enum-migrator");
134
+ Object.defineProperty(exports, "EnumMigrator", { enumerable: true, get: function () { return enum_migrator_1.EnumMigrator; } });
135
+ // Database clients
136
+ var database_client_interface_1 = require("./database/database-client.interface");
137
+ Object.defineProperty(exports, "DatabaseClient", { enumerable: true, get: function () { return database_client_interface_1.DatabaseClient; } });
138
+ var postgres_client_1 = require("./database/postgres-client");
139
+ Object.defineProperty(exports, "PostgresClient", { enumerable: true, get: function () { return postgres_client_1.PostgresClient; } });
140
+ var pg_client_1 = require("./database/pg-client");
141
+ Object.defineProperty(exports, "PgClient", { enumerable: true, get: function () { return pg_client_1.PgClient; } });
142
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,228 @@
1
+ import { DatabaseClient } from '../database/database-client.interface';
2
+ import { TableSchema } from '../schema/table-builder';
3
+ import { ColumnConfig } from '../schema/column-builder';
4
+ import { SequenceConfig } from '../schema/sequence-builder';
5
+ /**
6
+ * Database column information from pg
7
+ */
8
+ interface DbColumnInfo {
9
+ column_name: string;
10
+ data_type: string;
11
+ character_maximum_length: number | null;
12
+ numeric_precision: number | null;
13
+ numeric_scale: number | null;
14
+ is_nullable: 'YES' | 'NO';
15
+ column_default: string | null;
16
+ }
17
+ /**
18
+ * Migration operation types
19
+ */
20
+ type MigrationOperation = {
21
+ type: 'create_schema';
22
+ schemaName: string;
23
+ } | {
24
+ type: 'create_enum';
25
+ enumName: string;
26
+ values: readonly string[];
27
+ } | {
28
+ type: 'create_table';
29
+ tableName: string;
30
+ schema: TableSchema;
31
+ } | {
32
+ type: 'drop_table';
33
+ tableName: string;
34
+ } | {
35
+ type: 'add_column';
36
+ tableName: string;
37
+ columnName: string;
38
+ config: ColumnConfig;
39
+ } | {
40
+ type: 'drop_column';
41
+ tableName: string;
42
+ columnName: string;
43
+ } | {
44
+ type: 'alter_column';
45
+ tableName: string;
46
+ columnName: string;
47
+ from: DbColumnInfo;
48
+ to: ColumnConfig;
49
+ } | {
50
+ type: 'create_index';
51
+ tableName: string;
52
+ indexName: string;
53
+ columns: string[];
54
+ } | {
55
+ type: 'drop_index';
56
+ tableName: string;
57
+ indexName: string;
58
+ } | {
59
+ type: 'create_foreign_key';
60
+ tableName: string;
61
+ constraint: any;
62
+ } | {
63
+ type: 'drop_foreign_key';
64
+ tableName: string;
65
+ constraintName: string;
66
+ };
67
+ /**
68
+ * Database schema manager - handles schema creation, deletion, and automatic migrations
69
+ */
70
+ export declare class DbSchemaManager {
71
+ private client;
72
+ private schemaRegistry;
73
+ private logQueries;
74
+ private postMigrationHook?;
75
+ private sequenceRegistry;
76
+ private rl;
77
+ constructor(client: DatabaseClient, schemaRegistry: Map<string, TableSchema>, options?: {
78
+ logQueries?: boolean;
79
+ postMigrationHook?: (client: DatabaseClient) => Promise<void>;
80
+ sequenceRegistry?: Map<string, SequenceConfig>;
81
+ });
82
+ /**
83
+ * Get or create readline interface for interactive prompts
84
+ */
85
+ private getReadlineInterface;
86
+ /**
87
+ * Close readline interface if it exists
88
+ */
89
+ private closeReadlineInterface;
90
+ /**
91
+ * Get qualified table name with schema prefix if specified
92
+ */
93
+ private getQualifiedTableName;
94
+ /**
95
+ * Create all schemas used by tables
96
+ */
97
+ private createSchemas;
98
+ /**
99
+ * Create all ENUM types used in the schema
100
+ */
101
+ private createEnumTypes;
102
+ /**
103
+ * Create all sequences registered in the schema
104
+ */
105
+ private createSequences;
106
+ /**
107
+ * Create a single table
108
+ */
109
+ private createTable;
110
+ /**
111
+ * Create all tables in the database
112
+ */
113
+ ensureCreated(): Promise<void>;
114
+ /**
115
+ * Drop all tables
116
+ */
117
+ ensureDeleted(): Promise<void>;
118
+ /**
119
+ * Analyze differences between current DB and model schema
120
+ */
121
+ analyze(): Promise<MigrationOperation[]>;
122
+ /**
123
+ * Perform automatic migration - analyze and apply changes
124
+ */
125
+ migrate(): Promise<void>;
126
+ /**
127
+ * Execute a single migration operation
128
+ */
129
+ private executeOperation;
130
+ /**
131
+ * Execute create schema
132
+ */
133
+ private executeCreateSchema;
134
+ /**
135
+ * Execute create enum
136
+ */
137
+ private executeCreateEnum;
138
+ /**
139
+ * Execute drop table
140
+ */
141
+ private executeDropTable;
142
+ /**
143
+ * Execute add column
144
+ */
145
+ private executeAddColumn;
146
+ /**
147
+ * Execute drop column
148
+ */
149
+ private executeDropColumn;
150
+ /**
151
+ * Execute alter column
152
+ */
153
+ private executeAlterColumn;
154
+ /**
155
+ * Execute create index
156
+ */
157
+ private executeCreateIndex;
158
+ /**
159
+ * Execute drop index
160
+ */
161
+ private executeDropIndex;
162
+ /**
163
+ * Execute create foreign key
164
+ */
165
+ private executeCreateForeignKey;
166
+ /**
167
+ * Execute drop foreign key
168
+ */
169
+ private executeDropForeignKey;
170
+ /**
171
+ * Get all existing tables in the database
172
+ */
173
+ private getExistingTables;
174
+ /**
175
+ * Get all columns for a table
176
+ */
177
+ private getExistingColumns;
178
+ /**
179
+ * Get all indexes for a table
180
+ */
181
+ private getExistingIndexes;
182
+ /**
183
+ * Get all foreign key constraints for a table
184
+ */
185
+ private getExistingForeignKeys;
186
+ /**
187
+ * Check if a column needs to be altered
188
+ */
189
+ private needsAlter;
190
+ /**
191
+ * Normalize default values for comparison
192
+ */
193
+ private normalizeDefault;
194
+ /**
195
+ * Normalize PostgreSQL type names for comparison
196
+ */
197
+ private normalizeType;
198
+ /**
199
+ * Build type definition for ALTER COLUMN TYPE
200
+ */
201
+ private buildTypeDefinition;
202
+ /**
203
+ * Describe a database column
204
+ */
205
+ private describeDbColumn;
206
+ /**
207
+ * Describe a model column
208
+ */
209
+ private describeModelColumn;
210
+ /**
211
+ * Describe a migration operation
212
+ */
213
+ private describeOperation;
214
+ /**
215
+ * Ask user for confirmation (CLI prompt)
216
+ */
217
+ private confirm;
218
+ /**
219
+ * Format default value for SQL
220
+ */
221
+ private formatDefaultValue;
222
+ /**
223
+ * Close the schema manager and any open resources
224
+ */
225
+ close(): void;
226
+ }
227
+ export {};
228
+ //# sourceMappingURL=db-schema-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db-schema-manager.d.ts","sourceRoot":"","sources":["../../src/migration/db-schema-manager.ts"],"names":[],"mappings":"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"}