neoorm 0.1.1 → 0.1.3
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 +171 -11
- package/dist/bin/neoorm.js +11 -2
- package/dist/bin/neoorm.js.map +1 -1
- package/dist/codegen/emit-models.d.ts.map +1 -1
- package/dist/codegen/emit-models.js +24 -15
- package/dist/codegen/emit-models.js.map +1 -1
- package/dist/codegen/generate.d.ts +13 -2
- package/dist/codegen/generate.d.ts.map +1 -1
- package/dist/codegen/generate.js +70 -9
- package/dist/codegen/generate.js.map +1 -1
- package/dist/codegen/schema-to-manifest.d.ts +2 -1
- package/dist/codegen/schema-to-manifest.d.ts.map +1 -1
- package/dist/codegen/schema-to-manifest.js +22 -7
- package/dist/codegen/schema-to-manifest.js.map +1 -1
- package/dist/dialect/postgres.d.ts.map +1 -1
- package/dist/dialect/postgres.js +27 -23
- package/dist/dialect/postgres.js.map +1 -1
- package/dist/dialect/types.d.ts +8 -1
- package/dist/dialect/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/introspect/pull.d.ts.map +1 -1
- package/dist/introspect/pull.js +91 -31
- package/dist/introspect/pull.js.map +1 -1
- package/dist/plugins/builtin.d.ts +15 -0
- package/dist/plugins/builtin.d.ts.map +1 -0
- package/dist/plugins/builtin.js +156 -0
- package/dist/plugins/builtin.js.map +1 -0
- package/dist/plugins/ensure-plugins.d.ts +3 -0
- package/dist/plugins/ensure-plugins.d.ts.map +1 -0
- package/dist/plugins/ensure-plugins.js +19 -0
- package/dist/plugins/ensure-plugins.js.map +1 -0
- package/dist/plugins/index.d.ts +4 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +3 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/postgis/columns.d.ts +25 -0
- package/dist/plugins/postgis/columns.d.ts.map +1 -0
- package/dist/plugins/postgis/columns.js +82 -0
- package/dist/plugins/postgis/columns.js.map +1 -0
- package/dist/plugins/postgis/geojson.d.ts +4 -0
- package/dist/plugins/postgis/geojson.d.ts.map +1 -0
- package/dist/plugins/postgis/geojson.js +22 -0
- package/dist/plugins/postgis/geojson.js.map +1 -0
- package/dist/plugins/postgis/index.d.ts +4 -0
- package/dist/plugins/postgis/index.d.ts.map +1 -0
- package/dist/plugins/postgis/index.js +6 -0
- package/dist/plugins/postgis/index.js.map +1 -0
- package/dist/plugins/postgis/operators.d.ts +5 -0
- package/dist/plugins/postgis/operators.d.ts.map +1 -0
- package/dist/plugins/postgis/operators.js +35 -0
- package/dist/plugins/postgis/operators.js.map +1 -0
- package/dist/plugins/postgis/plugin.d.ts +3 -0
- package/dist/plugins/postgis/plugin.d.ts.map +1 -0
- package/dist/plugins/postgis/plugin.js +7 -0
- package/dist/plugins/postgis/plugin.js.map +1 -0
- package/dist/plugins/registry.d.ts +10 -0
- package/dist/plugins/registry.d.ts.map +1 -0
- package/dist/plugins/registry.js +89 -0
- package/dist/plugins/registry.js.map +1 -0
- package/dist/plugins/types.d.ts +32 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +2 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/runtime/client.d.ts +1 -1
- package/dist/runtime/client.d.ts.map +1 -1
- package/dist/runtime/client.js +29 -2
- package/dist/runtime/client.js.map +1 -1
- package/dist/runtime/executor.d.ts +4 -1
- package/dist/runtime/executor.d.ts.map +1 -1
- package/dist/runtime/executor.js +20 -3
- package/dist/runtime/executor.js.map +1 -1
- package/dist/runtime/query/compile.d.ts +3 -1
- package/dist/runtime/query/compile.d.ts.map +1 -1
- package/dist/runtime/query/compile.js +78 -11
- package/dist/runtime/query/compile.js.map +1 -1
- package/dist/runtime/query/create.d.ts.map +1 -1
- package/dist/runtime/query/create.js +61 -72
- package/dist/runtime/query/create.js.map +1 -1
- package/dist/runtime/query/primary-key.d.ts +4 -0
- package/dist/runtime/query/primary-key.d.ts.map +1 -0
- package/dist/runtime/query/primary-key.js +23 -0
- package/dist/runtime/query/primary-key.js.map +1 -0
- package/dist/runtime/query/update.js +2 -2
- package/dist/runtime/query/update.js.map +1 -1
- package/dist/runtime/query/upsert.d.ts.map +1 -1
- package/dist/runtime/query/upsert.js +2 -12
- package/dist/runtime/query/upsert.js.map +1 -1
- package/dist/runtime/types.d.ts +10 -0
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/schema/column.d.ts +8 -10
- package/dist/schema/column.d.ts.map +1 -1
- package/dist/schema/column.js +10 -53
- package/dist/schema/column.js.map +1 -1
- package/dist/schema/index.d.ts +2 -1
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +1 -1
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/relation.d.ts +1 -0
- package/dist/schema/relation.d.ts.map +1 -1
- package/dist/schema/relation.js +16 -11
- package/dist/schema/relation.js.map +1 -1
- package/dist/utils/uuid.d.ts +6 -0
- package/dist/utils/uuid.d.ts.map +1 -0
- package/dist/utils/uuid.js +34 -0
- package/dist/utils/uuid.js.map +1 -0
- package/package.json +13 -5
package/README.md
CHANGED
|
@@ -8,24 +8,24 @@ TypeScript-first PostgreSQL ORM with a schema DSL, compile-time types, codegen,
|
|
|
8
8
|
npm install neoorm pg
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Requires Node.js 20+ and PostgreSQL.
|
|
12
12
|
|
|
13
13
|
## Quick start
|
|
14
14
|
|
|
15
15
|
**1. Define a schema** (`schema.ts`):
|
|
16
16
|
|
|
17
17
|
```ts
|
|
18
|
-
import { defineSchema, table,
|
|
18
|
+
import { defineSchema, table, uuid, text, timestamp, fk } from "neoorm/schema";
|
|
19
19
|
|
|
20
20
|
export const schema = defineSchema({
|
|
21
21
|
users: table("users", {
|
|
22
|
-
id:
|
|
22
|
+
id: uuid().primary(),
|
|
23
23
|
email: text().notNull().unique(),
|
|
24
24
|
createdAt: timestamp().notNull().defaultNow(),
|
|
25
25
|
}),
|
|
26
26
|
|
|
27
27
|
posts: table("posts", {
|
|
28
|
-
id:
|
|
28
|
+
id: uuid().primary(),
|
|
29
29
|
authorId: fk("users.id", { as: "author", inverse: "posts", nullable: false }),
|
|
30
30
|
title: text().notNull(),
|
|
31
31
|
}),
|
|
@@ -53,33 +53,193 @@ export default defineConfig({
|
|
|
53
53
|
npx neoorm generate
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
+
This writes `client.ts`, `manifest.ts`, `models.ts`, `includes.ts`, and migration SQL when the schema changed.
|
|
57
|
+
|
|
56
58
|
**4. Query**
|
|
57
59
|
|
|
58
60
|
```ts
|
|
59
61
|
import { db } from "./neoorm/client.js";
|
|
60
62
|
|
|
61
|
-
const user = await db.users.findById(
|
|
63
|
+
const user = await db.users.findById(userId, {
|
|
62
64
|
with: {
|
|
63
65
|
posts: { orderBy: { createdAt: "desc" }, limit: 10 },
|
|
64
66
|
},
|
|
65
67
|
});
|
|
66
68
|
```
|
|
67
69
|
|
|
70
|
+
## Schema DSL
|
|
71
|
+
|
|
72
|
+
### Tables and accessors
|
|
73
|
+
|
|
74
|
+
`defineSchema` keys are TypeScript accessors (`users`, `posts`). The first argument to `table()` is the SQL table name:
|
|
75
|
+
|
|
76
|
+
```ts
|
|
77
|
+
users: table("user", { ... }) // db.users → SQL table "user"
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Column field names use camelCase in TypeScript. By default, SQL column names are snake_case (`createdAt` → `created_at`).
|
|
81
|
+
|
|
82
|
+
### Column types
|
|
83
|
+
|
|
84
|
+
| Builder | SQL type | Notes |
|
|
85
|
+
|---------|----------|-------|
|
|
86
|
+
| `id.primary()` | `TEXT` | App-generated string IDs (e.g. `user_a1b2c3d4`) |
|
|
87
|
+
| `uuid()` | `UUID` | Defaults to UUID v7; pass `{ version: 4 }` for v4 |
|
|
88
|
+
| `uuid().primary()` | `UUID` | Primary key; auto-generated on create if omitted |
|
|
89
|
+
| `text()` | `TEXT` | |
|
|
90
|
+
| `bool()` | `BOOLEAN` | |
|
|
91
|
+
| `int()` | `INTEGER` | |
|
|
92
|
+
| `timestamp()` | `TIMESTAMPTZ` | Use `.defaultNow()` for `DEFAULT NOW()` |
|
|
93
|
+
|
|
94
|
+
All column builders support `.notNull()`, `.unique()`, `.default(value)`, `.defaultNow()`, `.primary()`, and `.map(name)`.
|
|
95
|
+
|
|
96
|
+
Foreign keys use `fk("target_table.target_column", { as, inverse, nullable?, onDelete? })`.
|
|
97
|
+
|
|
98
|
+
### UUID columns
|
|
99
|
+
|
|
100
|
+
```ts
|
|
101
|
+
import { uuid, table } from "neoorm/schema";
|
|
102
|
+
|
|
103
|
+
posts: table("posts", {
|
|
104
|
+
id: uuid().primary(), // UUID v7 (default)
|
|
105
|
+
legacyId: uuid({ version: 4 }), // UUID v4
|
|
106
|
+
})
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
When you call `create` without an `id`, NeoOrm generates a UUID using the configured version.
|
|
110
|
+
|
|
111
|
+
### Custom SQL column names (`.map()`)
|
|
112
|
+
|
|
113
|
+
Use `.map()` when the database column name differs from the default snake_case conversion:
|
|
114
|
+
|
|
115
|
+
```ts
|
|
116
|
+
emailAddress: text().notNull().map("email"),
|
|
117
|
+
authorId: fk("users.id", { as: "author", inverse: "posts" }).map("author_ref"),
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
`.map()` only produces a migration when the SQL name actually changes. Mapping to the default snake_case name (e.g. `.map("email_verified")` on `emailVerified`) is a no-op — `neoorm generate` warns about this.
|
|
121
|
+
|
|
122
|
+
### Indexes and composite keys
|
|
123
|
+
|
|
124
|
+
```ts
|
|
125
|
+
posts: table(
|
|
126
|
+
"posts",
|
|
127
|
+
{ /* columns */ },
|
|
128
|
+
(t) => ({
|
|
129
|
+
authorIdx: index().on(t.authorId),
|
|
130
|
+
slugUnique: unique(t.slug),
|
|
131
|
+
pk: primaryKey(t.orgId, t.localId),
|
|
132
|
+
}),
|
|
133
|
+
)
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Many-to-many
|
|
137
|
+
|
|
138
|
+
Define the junction table, then register the relation after `defineSchema`:
|
|
139
|
+
|
|
140
|
+
```ts
|
|
141
|
+
export const schema = defineSchema({
|
|
142
|
+
posts: table("posts", { /* ... */ }),
|
|
143
|
+
tags: table("tags", { /* ... */ }),
|
|
144
|
+
postTags: table("post_tags", {
|
|
145
|
+
postId: fk("posts.id", { as: "post", inverse: "postTags", nullable: false }),
|
|
146
|
+
tagId: fk("tags.id", { as: "tag", inverse: "postTags", nullable: false }),
|
|
147
|
+
}, (t) => ({
|
|
148
|
+
pk: primaryKey(t.postId, t.tagId),
|
|
149
|
+
})),
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
manyToMany(schema.posts, schema.tags, {
|
|
153
|
+
through: schema.postTags,
|
|
154
|
+
left: "post",
|
|
155
|
+
right: "tag",
|
|
156
|
+
as: "tags",
|
|
157
|
+
inverse: "posts",
|
|
158
|
+
});
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Transactions
|
|
162
|
+
|
|
163
|
+
```ts
|
|
164
|
+
// Interactive callback
|
|
165
|
+
await db.$transaction(async (tx) => {
|
|
166
|
+
const user = await tx.users.create({ data: { email: "a@b.com" } });
|
|
167
|
+
await tx.posts.create({
|
|
168
|
+
data: {
|
|
169
|
+
title: "Hello",
|
|
170
|
+
authorId: user.id,
|
|
171
|
+
},
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
// Batch steps (sequential, one transaction)
|
|
176
|
+
const [user, post] = await db.$transaction([
|
|
177
|
+
(tx) => tx.users.create({ data: { email: "a@b.com" } }),
|
|
178
|
+
(tx) => tx.posts.create({ data: { title: "Hello" } }),
|
|
179
|
+
]);
|
|
180
|
+
|
|
181
|
+
// Options
|
|
182
|
+
await db.$transaction(fn, {
|
|
183
|
+
isolationLevel: "Serializable", // ReadUncommitted | ReadCommitted | RepeatableRead | Serializable
|
|
184
|
+
readOnly: true,
|
|
185
|
+
});
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Nested `create` calls inside a transaction do not start a separate transaction.
|
|
189
|
+
|
|
68
190
|
## CLI
|
|
69
191
|
|
|
70
192
|
| Command | Description |
|
|
71
193
|
|---------|-------------|
|
|
72
|
-
| `neoorm generate` | Emit manifest, typed client, includes, and migrations |
|
|
73
|
-
| `neoorm migrate dev` | Apply pending migrations
|
|
194
|
+
| `neoorm generate` | Emit manifest, typed client, models, includes, and migrations |
|
|
195
|
+
| `neoorm migrate dev` | Apply pending migrations, then generate a new one if the schema changed |
|
|
74
196
|
| `neoorm migrate deploy` | Apply pending migrations |
|
|
75
|
-
| `neoorm db push` | Push schema to the database |
|
|
197
|
+
| `neoorm db push` | Push the current snapshot schema to the database |
|
|
76
198
|
| `neoorm db pull` | Introspect the database into a schema file |
|
|
77
199
|
|
|
200
|
+
`generate` always rewrites generated TypeScript files. Migration SQL is created only when the schema diff produces changes (new tables/columns, column renames via `.map()`).
|
|
201
|
+
|
|
202
|
+
## Plugins
|
|
203
|
+
|
|
204
|
+
### PostGIS
|
|
205
|
+
|
|
206
|
+
```ts
|
|
207
|
+
import "neoorm/plugins/postgis";
|
|
208
|
+
import { geometry, point } from "neoorm/plugins/postgis";
|
|
209
|
+
|
|
210
|
+
places: table("places", {
|
|
211
|
+
id: uuid().primary(),
|
|
212
|
+
location: geometry({ subtype: "Point", srid: 4326 }).notNull(),
|
|
213
|
+
boundary: point({ srid: 4326 }),
|
|
214
|
+
})
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
Spatial `where` operators: `intersects`, `within`, `dWithin`.
|
|
218
|
+
|
|
219
|
+
```ts
|
|
220
|
+
await db.places.findMany({
|
|
221
|
+
where: {
|
|
222
|
+
location: {
|
|
223
|
+
dWithin: {
|
|
224
|
+
geometry: { type: "Point", coordinates: [-122.4, 37.8] },
|
|
225
|
+
distance: 1000,
|
|
226
|
+
},
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
});
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
PostGIS columns are stored as geometry/geography in PostgreSQL and exposed as GeoJSON in TypeScript.
|
|
233
|
+
|
|
78
234
|
## API surface
|
|
79
235
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
236
|
+
| Import | Purpose |
|
|
237
|
+
|--------|---------|
|
|
238
|
+
| `neoorm` | Config helpers, `createNeoOrmClient`, client types |
|
|
239
|
+
| `neoorm/schema` | Schema DSL (`defineSchema`, `table`, column builders, `fk`, `manyToMany`) |
|
|
240
|
+
| `neoorm/sql` | Tagged SQL templates and query builder |
|
|
241
|
+
| `neoorm/plugins` | Plugin registry |
|
|
242
|
+
| `neoorm/plugins/postgis` | PostGIS column types and spatial operators |
|
|
83
243
|
|
|
84
244
|
## License
|
|
85
245
|
|
package/dist/bin/neoorm.js
CHANGED
|
@@ -20,15 +20,21 @@ program
|
|
|
20
20
|
const config = await loadConfig(cwd);
|
|
21
21
|
const schemaPath = resolve(cwd, config.schema);
|
|
22
22
|
const outDir = resolve(cwd, config.out);
|
|
23
|
-
const { migrationName } = await generateFromSchema(schemaPath, outDir);
|
|
23
|
+
const { migrationName, schemaChanged, warnings } = await generateFromSchema(schemaPath, outDir);
|
|
24
24
|
console.log(`Generated client at ${outDir}/client.ts`);
|
|
25
25
|
console.log(`Generated manifest at ${outDir}/manifest.ts`);
|
|
26
26
|
if (migrationName) {
|
|
27
27
|
console.log(`Created migration: ${migrationName}`);
|
|
28
28
|
}
|
|
29
|
+
else if (schemaChanged) {
|
|
30
|
+
console.log("Manifest updated (no migration SQL needed)");
|
|
31
|
+
}
|
|
29
32
|
else {
|
|
30
33
|
console.log("No schema changes detected");
|
|
31
34
|
}
|
|
35
|
+
for (const warning of warnings) {
|
|
36
|
+
console.warn(`Warning: ${warning}`);
|
|
37
|
+
}
|
|
32
38
|
});
|
|
33
39
|
program
|
|
34
40
|
.command("migrate")
|
|
@@ -55,7 +61,10 @@ program
|
|
|
55
61
|
if (subcommand === "dev") {
|
|
56
62
|
const { generateFromSchema } = await import("../codegen/generate.js");
|
|
57
63
|
const schemaPath = resolve(cwd, config.schema);
|
|
58
|
-
const { migrationName } = await generateFromSchema(schemaPath, outDir);
|
|
64
|
+
const { migrationName, warnings } = await generateFromSchema(schemaPath, outDir);
|
|
65
|
+
for (const warning of warnings) {
|
|
66
|
+
console.warn(`Warning: ${warning}`);
|
|
67
|
+
}
|
|
59
68
|
if (migrationName) {
|
|
60
69
|
await migrateDeploy(pool, join(outDir, "migrations"));
|
|
61
70
|
console.log(`Created and applied: ${migrationName}`);
|
package/dist/bin/neoorm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"neoorm.js","sourceRoot":"","sources":["../../src/bin/neoorm.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,YAAY,CAAC;KACzB,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAExC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"neoorm.js","sourceRoot":"","sources":["../../src/bin/neoorm.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,YAAY,CAAC;KACzB,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAExC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,MAAM,kBAAkB,CACzE,UAAU,EACV,MAAM,CACP,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,YAAY,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,yBAAyB,MAAM,cAAc,CAAC,CAAC;IAC3D,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,sBAAsB,aAAa,EAAE,CAAC,CAAC;IACrD,CAAC;SAAM,IAAI,aAAa,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC5C,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;IACtC,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,gBAAgB,CAAC;KAC7B,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;KACxC,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;IAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAEjD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;IAEnE,IAAI,CAAC;QACH,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;YACpD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YACzD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,CAAC,MAAM,gBAAgB,CAAC,CAAC;gBACvD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;YAED,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;gBACzB,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;gBACtE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC/C,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,MAAM,kBAAkB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBACjF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;oBAC/B,OAAO,CAAC,IAAI,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;gBACtC,CAAC;gBACD,IAAI,aAAa,EAAE,CAAC;oBAClB,MAAM,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;oBACtD,OAAO,CAAC,GAAG,CAAC,wBAAwB,aAAa,EAAE,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;IACnB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,IAAI,CAAC;KACb,WAAW,CAAC,oBAAoB,CAAC;KACjC,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC;KACvC,MAAM,CAAC,qBAAqB,EAAE,sBAAsB,EAAE,kBAAkB,CAAC;KACzE,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,OAA4B,EAAE,EAAE;IACzD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;IAEnE,IAAI,CAAC;QACH,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;YAChE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;gBAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACxC,CAAC;aAAM,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,IAAI,kBAAkB,CAAC,CAAC;YACtE,MAAM,SAAS,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;IACnB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emit-models.d.ts","sourceRoot":"","sources":["../../src/codegen/emit-models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAiC,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"emit-models.d.ts","sourceRoot":"","sources":["../../src/codegen/emit-models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAiC,MAAM,qBAAqB,CAAC;AAoGnF,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CA2EvD"}
|
|
@@ -1,21 +1,29 @@
|
|
|
1
1
|
import { effectiveRelations, pascalCase, singularTypeName, } from "./manifest-relations.js";
|
|
2
|
+
import { getColumnTypeOrThrow } from "../plugins/registry.js";
|
|
2
3
|
function columnTsType(col) {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
case "text":
|
|
6
|
-
case "fk":
|
|
7
|
-
return col.nullable ? "string | null" : "string";
|
|
8
|
-
case "bool":
|
|
9
|
-
return col.nullable ? "boolean | null" : "boolean";
|
|
10
|
-
case "int":
|
|
11
|
-
return col.nullable ? "number | null" : "number";
|
|
12
|
-
case "timestamp":
|
|
13
|
-
return col.nullable ? "string | null" : "string";
|
|
14
|
-
default: {
|
|
15
|
-
const _exhaustive = col.kind;
|
|
16
|
-
return _exhaustive;
|
|
17
|
-
}
|
|
4
|
+
if (col.kind === "fk") {
|
|
5
|
+
return col.nullable ? "string | null" : "string";
|
|
18
6
|
}
|
|
7
|
+
return getColumnTypeOrThrow(col.kind).columnTsType(col);
|
|
8
|
+
}
|
|
9
|
+
function emitGeoJsonTypes(manifest) {
|
|
10
|
+
const hasPostgis = (manifest.extensions ?? []).includes("postgis");
|
|
11
|
+
if (!hasPostgis)
|
|
12
|
+
return [];
|
|
13
|
+
return [
|
|
14
|
+
"export type GeoJsonPoint = {",
|
|
15
|
+
' type: "Point";',
|
|
16
|
+
" coordinates: [number, number] | [number, number, number];",
|
|
17
|
+
"};",
|
|
18
|
+
"",
|
|
19
|
+
"export type GeoJsonPolygon = {",
|
|
20
|
+
' type: "Polygon";',
|
|
21
|
+
" coordinates: number[][][];",
|
|
22
|
+
"};",
|
|
23
|
+
"",
|
|
24
|
+
"export type GeoJsonGeometry = GeoJsonPoint | GeoJsonPolygon | Record<string, unknown>;",
|
|
25
|
+
"",
|
|
26
|
+
];
|
|
19
27
|
}
|
|
20
28
|
function emitBaseModel(table) {
|
|
21
29
|
const name = singularTypeName(table.accessor);
|
|
@@ -76,6 +84,7 @@ export function emitModelsTs(manifest) {
|
|
|
76
84
|
"// Auto-generated by neoorm generate — do not edit",
|
|
77
85
|
`import type { ${withTypeNames.join(", ")} } from "./includes.js";`,
|
|
78
86
|
"",
|
|
87
|
+
...emitGeoJsonTypes(manifest),
|
|
79
88
|
"type IncludeRelation<",
|
|
80
89
|
" W,",
|
|
81
90
|
" Key extends PropertyKey,",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emit-models.js","sourceRoot":"","sources":["../../src/codegen/emit-models.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"emit-models.js","sourceRoot":"","sources":["../../src/codegen/emit-models.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
import type { Manifest } from "../dialect/types.js";
|
|
2
2
|
import type { ManyToManyDef } from "../schema/many-to-many.js";
|
|
3
|
+
import type { NeoOrmPlugin } from "../plugins/types.js";
|
|
4
|
+
import type { ColumnDef } from "../schema/table.js";
|
|
3
5
|
export declare function loadSchemaModule(schemaPath: string): Promise<{
|
|
4
6
|
schema: import("../schema/define-schema.js").SchemaDef<Record<string, import("../schema/table.js").TableDef>>;
|
|
5
7
|
manyToMany: ManyToManyDef[];
|
|
8
|
+
plugins: NeoOrmPlugin[];
|
|
6
9
|
}>;
|
|
7
10
|
export declare function hashManifest(manifest: Manifest): string;
|
|
11
|
+
export declare function collectRedundantMapWarnings(schema: {
|
|
12
|
+
readonly _tables: Record<string, {
|
|
13
|
+
readonly _columns: Record<string, ColumnDef>;
|
|
14
|
+
}>;
|
|
15
|
+
}): string[];
|
|
8
16
|
export declare function readSnapshot(outDir: string): Promise<Manifest | null>;
|
|
9
17
|
export declare function writeSnapshot(outDir: string, manifest: Manifest): Promise<void>;
|
|
10
18
|
export declare function emitManifestTs(manifest: Manifest, packageImportPath: string): string;
|
|
@@ -17,8 +25,11 @@ export declare function writeMigration(outDir: string, sql: string[], name?: str
|
|
|
17
25
|
export declare function writeGeneratedFiles(outDir: string, manifest: Manifest, migrationSql: string[], schemaPath: string): Promise<{
|
|
18
26
|
migrationName: string | null;
|
|
19
27
|
}>;
|
|
20
|
-
export
|
|
28
|
+
export type GenerateResult = {
|
|
21
29
|
manifest: Manifest;
|
|
22
30
|
migrationName: string | null;
|
|
23
|
-
|
|
31
|
+
schemaChanged: boolean;
|
|
32
|
+
warnings: string[];
|
|
33
|
+
};
|
|
34
|
+
export declare function generateFromSchema(schemaPath: string, outDir: string): Promise<GenerateResult>;
|
|
24
35
|
//# sourceMappingURL=generate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/codegen/generate.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/codegen/generate.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAA6B,MAAM,qBAAqB,CAAC;AAI/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAkDpD,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAClE,MAAM,EAAE,OAAO,4BAA4B,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,oBAAoB,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9G,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB,CAAC,CAsBD;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAKvD;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE;IACN,QAAQ,CAAC,OAAO,EAAE,MAAM,CACtB,MAAM,EACN;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;KAAE,CACjD,CAAC;CACH,GACA,MAAM,EAAE,CAiBV;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAO3E;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAMpF;AAED,wBAAgB,YAAY,CAAC,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAsBxF;AAgBD,wBAAgB,YAAY,CAC1B,IAAI,EAAE,QAAQ,GAAG,IAAI,EACrB,IAAI,EAAE,QAAQ,GACb;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,EAAE,CAAA;CAAE,CAsDvC;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EAAE,EACb,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgBxB;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,MAAM,EAAE,EACtB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CA2B3C;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,CAAC,CAoBzB"}
|
package/dist/codegen/generate.js
CHANGED
|
@@ -5,6 +5,7 @@ import { fileURLToPath } from "node:url";
|
|
|
5
5
|
import { postgresDialect } from "../dialect/postgres.js";
|
|
6
6
|
import { emitIncludesTs } from "./emit-includes.js";
|
|
7
7
|
import { emitModelsTs } from "./emit-models.js";
|
|
8
|
+
import { toSnakeCase } from "../utils/case.js";
|
|
8
9
|
async function resolveManyToManyDefs() {
|
|
9
10
|
const { getManyToManyRegistry } = await import("../schema/many-to-many.js");
|
|
10
11
|
const fromDist = getManyToManyRegistry();
|
|
@@ -25,6 +26,25 @@ async function resolveManyToManyDefs() {
|
|
|
25
26
|
}
|
|
26
27
|
return [];
|
|
27
28
|
}
|
|
29
|
+
async function resolvePluginRegistry() {
|
|
30
|
+
const { getPluginRegistry } = await import("../plugins/registry.js");
|
|
31
|
+
const fromDist = getPluginRegistry();
|
|
32
|
+
if (fromDist.length > 1) {
|
|
33
|
+
return [...fromDist];
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
const codegenDir = dirname(fileURLToPath(import.meta.url));
|
|
37
|
+
const { getPluginRegistry: getSrcRegistry } = await import(join(codegenDir, "../../src/plugins/registry.js"));
|
|
38
|
+
const fromSrc = getSrcRegistry();
|
|
39
|
+
if (fromSrc.length > 1) {
|
|
40
|
+
return [...fromSrc];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
// src/ not available in published package — dist registry is authoritative
|
|
45
|
+
}
|
|
46
|
+
return [...fromDist];
|
|
47
|
+
}
|
|
28
48
|
export async function loadSchemaModule(schemaPath) {
|
|
29
49
|
const { pathToFileURL } = await import("node:url");
|
|
30
50
|
const { register } = await import("tsx/esm/api");
|
|
@@ -38,7 +58,8 @@ export async function loadSchemaModule(schemaPath) {
|
|
|
38
58
|
throw new Error(`Schema file must export a schema via \`export const schema = defineSchema(...)\``);
|
|
39
59
|
}
|
|
40
60
|
const manyToMany = await resolveManyToManyDefs();
|
|
41
|
-
|
|
61
|
+
const plugins = await resolvePluginRegistry();
|
|
62
|
+
return { schema, manyToMany, plugins };
|
|
42
63
|
}
|
|
43
64
|
export function hashManifest(manifest) {
|
|
44
65
|
return createHash("sha256")
|
|
@@ -46,6 +67,20 @@ export function hashManifest(manifest) {
|
|
|
46
67
|
.digest("hex")
|
|
47
68
|
.slice(0, 16);
|
|
48
69
|
}
|
|
70
|
+
export function collectRedundantMapWarnings(schema) {
|
|
71
|
+
const warnings = [];
|
|
72
|
+
for (const [accessor, table] of Object.entries(schema._tables)) {
|
|
73
|
+
for (const [tsName, col] of Object.entries(table._columns)) {
|
|
74
|
+
if (!("_meta" in col) || !col._meta.mapName)
|
|
75
|
+
continue;
|
|
76
|
+
const defaultName = toSnakeCase(tsName);
|
|
77
|
+
if (col._meta.mapName === defaultName) {
|
|
78
|
+
warnings.push(`${accessor}.${tsName}.map("${col._meta.mapName}") matches the default snake_case SQL name — remove .map() or use a different name to rename the column`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return warnings;
|
|
83
|
+
}
|
|
49
84
|
export async function readSnapshot(outDir) {
|
|
50
85
|
try {
|
|
51
86
|
const content = await readFile(join(outDir, "snapshot.json"), "utf-8");
|
|
@@ -102,7 +137,11 @@ function schemaImportPath(outDir, schemaPath) {
|
|
|
102
137
|
const NEOORM_PACKAGE = "neoorm";
|
|
103
138
|
export function diffManifest(prev, next) {
|
|
104
139
|
if (!prev) {
|
|
105
|
-
const sql =
|
|
140
|
+
const sql = [];
|
|
141
|
+
for (const ext of next.extensions ?? []) {
|
|
142
|
+
sql.push(`CREATE EXTENSION IF NOT EXISTS ${ext};`);
|
|
143
|
+
}
|
|
144
|
+
sql.push(...Object.values(next.tables).map((t) => postgresDialect.emitCreateTable(t)));
|
|
106
145
|
return { isInitial: true, sql };
|
|
107
146
|
}
|
|
108
147
|
const sql = [];
|
|
@@ -116,10 +155,30 @@ export function diffManifest(prev, next) {
|
|
|
116
155
|
else {
|
|
117
156
|
const prevTable = prev.tables[accessor];
|
|
118
157
|
const nextTable = next.tables[accessor];
|
|
119
|
-
const
|
|
120
|
-
const
|
|
121
|
-
|
|
122
|
-
|
|
158
|
+
const prevByTs = new Map(prevTable.columns.map((c) => [c.tsName, c]));
|
|
159
|
+
const prevSqlNames = new Set(prevTable.columns.map((c) => c.sqlName));
|
|
160
|
+
const renameColumns = [];
|
|
161
|
+
const addColumns = [];
|
|
162
|
+
for (const nextCol of nextTable.columns) {
|
|
163
|
+
const prevCol = prevByTs.get(nextCol.tsName);
|
|
164
|
+
if (prevCol) {
|
|
165
|
+
if (prevCol.sqlName !== nextCol.sqlName) {
|
|
166
|
+
renameColumns.push({ from: prevCol.sqlName, to: nextCol.sqlName });
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
else if (!prevSqlNames.has(nextCol.sqlName)) {
|
|
170
|
+
addColumns.push(nextCol);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
if (renameColumns.length > 0 || addColumns.length > 0) {
|
|
174
|
+
const diff = {};
|
|
175
|
+
if (renameColumns.length > 0) {
|
|
176
|
+
diff.renameColumns = renameColumns;
|
|
177
|
+
}
|
|
178
|
+
if (addColumns.length > 0) {
|
|
179
|
+
diff.addColumns = addColumns;
|
|
180
|
+
}
|
|
181
|
+
sql.push(...postgresDialect.emitAlterTable(nextTable, diff));
|
|
123
182
|
}
|
|
124
183
|
}
|
|
125
184
|
}
|
|
@@ -152,15 +211,17 @@ export async function writeGeneratedFiles(outDir, manifest, migrationSql, schema
|
|
|
152
211
|
}
|
|
153
212
|
export async function generateFromSchema(schemaPath, outDir) {
|
|
154
213
|
const { schemaToManifest, validateManifest } = await import("./schema-to-manifest.js");
|
|
155
|
-
const { schema, manyToMany } = await loadSchemaModule(schemaPath);
|
|
156
|
-
const manifest = schemaToManifest(schema, manyToMany);
|
|
214
|
+
const { schema, manyToMany, plugins } = await loadSchemaModule(schemaPath);
|
|
215
|
+
const manifest = schemaToManifest(schema, manyToMany, plugins);
|
|
216
|
+
const warnings = collectRedundantMapWarnings(schema);
|
|
157
217
|
const errors = validateManifest(manifest);
|
|
158
218
|
if (errors.length > 0) {
|
|
159
219
|
throw new Error(`Schema validation failed:\n${errors.join("\n")}`);
|
|
160
220
|
}
|
|
161
221
|
const prev = await readSnapshot(outDir);
|
|
222
|
+
const schemaChanged = !prev || hashManifest(prev) !== hashManifest(manifest);
|
|
162
223
|
const { sql } = diffManifest(prev, manifest);
|
|
163
224
|
const { migrationName } = await writeGeneratedFiles(outDir, manifest, sql, schemaPath);
|
|
164
|
-
return { manifest, migrationName };
|
|
225
|
+
return { manifest, migrationName, schemaChanged, warnings };
|
|
165
226
|
}
|
|
166
227
|
//# sourceMappingURL=generate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/codegen/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/codegen/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { TableDef } from "../schema/table.js";
|
|
2
2
|
import type { Manifest } from "../dialect/types.js";
|
|
3
3
|
import type { ManyToManyDef } from "../schema/many-to-many.js";
|
|
4
|
+
import type { NeoOrmPlugin } from "../plugins/types.js";
|
|
4
5
|
export declare function schemaToManifest<T extends Record<string, TableDef>>(schema: {
|
|
5
6
|
readonly _tables: T;
|
|
6
|
-
}, m2mDefs?: readonly ManyToManyDef[]): Manifest;
|
|
7
|
+
}, m2mDefs?: readonly ManyToManyDef[], plugins?: readonly NeoOrmPlugin[]): Manifest;
|
|
7
8
|
export declare function validateManifest(manifest: Manifest): string[];
|
|
8
9
|
//# sourceMappingURL=schema-to-manifest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-to-manifest.d.ts","sourceRoot":"","sources":["../../src/codegen/schema-to-manifest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,oBAAoB,CAAC;AAI/D,OAAO,KAAK,EACV,QAAQ,EAMT,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"schema-to-manifest.d.ts","sourceRoot":"","sources":["../../src/codegen/schema-to-manifest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,oBAAoB,CAAC;AAI/D,OAAO,KAAK,EACV,QAAQ,EAMT,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAiHxD,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EACjE,MAAM,EAAE;IAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;CAAE,EAC/B,OAAO,GAAE,SAAS,aAAa,EAA4B,EAC3D,OAAO,GAAE,SAAS,YAAY,EAAwB,GACrD,QAAQ,CAyIV;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,EAAE,CAiC7D"}
|