Skip to content

Commit 01281eb

Browse files
committed
seperate fromDisk migration loader
1 parent 19289ab commit 01281eb

File tree

13 files changed

+152
-101
lines changed

13 files changed

+152
-101
lines changed

.changeset/unlucky-squids-add.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
"@sqlfx/sqlite": patch
3+
"@sqlfx/mysql": patch
4+
"@sqlfx/sql": patch
5+
"@sqlfx/pg": patch
6+
---
7+
8+
seperate fromDisk migration loader

docs/sql/Migrator.ts.md

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ Added in v1.0.0
2424
- [ResolvedMigration (type alias)](#resolvedmigration-type-alias)
2525
- [utils](#utils)
2626
- [fromBabelGlob](#frombabelglob)
27-
- [fromDisk](#fromdisk)
2827
- [fromGlob](#fromglob)
2928

3029
---
@@ -143,16 +142,6 @@ export declare const fromBabelGlob: (migrations: Record<string, any>) => Loader
143142
144143
Added in v1.0.0
145144
146-
## fromDisk
147-
148-
**Signature**
149-
150-
```ts
151-
export declare const fromDisk: (directory: string) => Loader
152-
```
153-
154-
Added in v1.0.0
155-
156145
## fromGlob
157146
158147
**Signature**

docs/sql/Migrator/Node.ts.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
---
2+
title: Migrator/Node.ts
3+
nav_order: 5
4+
parent: "@sqlfx/sql"
5+
---
6+
7+
## Node overview
8+
9+
Added in v1.0.0
10+
11+
---
12+
13+
<h2 class="text-delta">Table of contents</h2>
14+
15+
- [utils](#utils)
16+
- [fromDisk](#fromdisk)
17+
18+
---
19+
20+
# utils
21+
22+
## fromDisk
23+
24+
**Signature**
25+
26+
```ts
27+
export declare const fromDisk: (directory: string) => Loader
28+
```
29+
30+
Added in v1.0.0

docs/sql/Schema.ts.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: Schema.ts
3-
nav_order: 5
3+
nav_order: 6
44
parent: "@sqlfx/sql"
55
---
66

docs/sql/Statement.ts.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: Statement.ts
3-
nav_order: 6
3+
nav_order: 7
44
parent: "@sqlfx/sql"
55
---
66

docs/sql/Transform.ts.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: Transform.ts
3-
nav_order: 7
3+
nav_order: 8
44
parent: "@sqlfx/sql"
55
---
66

docs/sqlite/MigratorNode.ts.md renamed to docs/sqlite/Migrator/Node.ts.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
---
2-
title: MigratorNode.ts
2+
title: Migrator/Node.ts
33
nav_order: 5
44
parent: "@sqlfx/sqlite"
55
---
66

7-
## MigratorNode overview
7+
## Node overview
88

99
Added in v1.0.0
1010

packages/mysql/src/Migrator.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,28 +7,29 @@ import * as Layer from "@effect/io/Layer"
77
import * as Sql from "@sqlfx/mysql"
88
import type { SqlError } from "@sqlfx/sql/Error"
99
import * as _ from "@sqlfx/sql/Migrator"
10+
import { fromDisk } from "@sqlfx/sql/Migrator/Node"
1011
import { execFile } from "node:child_process"
1112
import * as NFS from "node:fs"
1213
import * as Path from "node:path"
1314

14-
const { fromBabelGlob, fromDisk, fromGlob } = _
15+
const { fromBabelGlob, fromGlob } = _
1516

1617
export {
1718
/**
1819
* @category loader
1920
* @since 1.0.0
2021
*/
21-
fromDisk,
22+
fromBabelGlob,
2223
/**
2324
* @category loader
2425
* @since 1.0.0
2526
*/
26-
fromGlob,
27+
fromDisk,
2728
/**
2829
* @category loader
2930
* @since 1.0.0
3031
*/
31-
fromBabelGlob,
32+
fromGlob,
3233
}
3334

3435
/**

packages/pg/src/Migrator.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,28 +7,29 @@ import * as Layer from "@effect/io/Layer"
77
import * as Pg from "@sqlfx/pg"
88
import type { SqlError } from "@sqlfx/sql/Error"
99
import * as _ from "@sqlfx/sql/Migrator"
10+
import { fromDisk } from "@sqlfx/sql/Migrator/Node"
1011
import { execFile } from "node:child_process"
1112
import * as NFS from "node:fs"
1213
import * as Path from "node:path"
1314

14-
const { fromBabelGlob, fromDisk, fromGlob } = _
15+
const { fromBabelGlob, fromGlob } = _
1516

1617
export {
1718
/**
1819
* @category loader
1920
* @since 1.0.0
2021
*/
21-
fromDisk,
22+
fromBabelGlob,
2223
/**
2324
* @category loader
2425
* @since 1.0.0
2526
*/
26-
fromGlob,
27+
fromDisk,
2728
/**
2829
* @category loader
2930
* @since 1.0.0
3031
*/
31-
fromBabelGlob,
32+
fromGlob,
3233
}
3334

3435
/**

packages/sql/src/Migrator.ts

Lines changed: 3 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,9 @@ export const make =
140140
),
141141
),
142142
Effect.flatMap(_ =>
143-
_.default
143+
Effect.isEffect(_)
144+
? Effect.succeed(_)
145+
: _.default
144146
? Effect.succeed(_.default?.default ?? _.default)
145147
: Effect.fail(
146148
MigrationError({
@@ -283,46 +285,6 @@ export const make =
283285
return completed
284286
})
285287

286-
/**
287-
* @since 1.0.0
288-
*/
289-
export const fromDisk = (directory: string): Loader =>
290-
pipe(
291-
Effect.promise(() => import("node:fs")),
292-
Effect.map(NFS =>
293-
NFS.readdirSync(directory)
294-
.map(_ =>
295-
Option.fromNullable(_.match(/^(?:.*\/)?(\d+)_([^.]+)\.(js|ts)$/)),
296-
)
297-
.flatMap(
298-
Option.match({
299-
onNone: () => [],
300-
onSome: ([basename, id, name]): ReadonlyArray<ResolvedMigration> =>
301-
[
302-
[
303-
Number(id),
304-
name,
305-
Effect.promise(
306-
() =>
307-
import(
308-
/* @vite-ignore */
309-
`${directory}/${basename}`
310-
),
311-
),
312-
],
313-
] as const,
314-
}),
315-
)
316-
.sort(([a], [b]) => a - b),
317-
),
318-
Effect.catchAllDefect(_ =>
319-
Effect.as(
320-
Effect.logDebug(`Could not load migrations from disk: ${_}`),
321-
[],
322-
),
323-
),
324-
)
325-
326288
const migrationOrder = Order.make<ResolvedMigration>(([a], [b]) =>
327289
Order.number(a, b),
328290
)

packages/sql/src/Migrator/Node.ts

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/**
2+
* @since 1.0.0
3+
*/
4+
import { pipe } from "@effect/data/Function"
5+
import * as Option from "@effect/data/Option"
6+
import * as Effect from "@effect/io/Effect"
7+
import type { Loader, ResolvedMigration } from "@sqlfx/sql/Migrator"
8+
9+
/**
10+
* @since 1.0.0
11+
*/
12+
export const fromDisk = (directory: string): Loader =>
13+
pipe(
14+
Effect.promise(() => import("node:fs")),
15+
Effect.map(NFS =>
16+
NFS.readdirSync(directory)
17+
.map(_ =>
18+
Option.fromNullable(_.match(/^(?:.*\/)?(\d+)_([^.]+)\.(js|ts)$/)),
19+
)
20+
.flatMap(
21+
Option.match({
22+
onNone: () => [],
23+
onSome: ([basename, id, name]): ReadonlyArray<ResolvedMigration> =>
24+
[
25+
[
26+
Number(id),
27+
name,
28+
Effect.promise(
29+
() =>
30+
import(
31+
/* @vite-ignore */
32+
`${directory}/${basename}`
33+
),
34+
),
35+
],
36+
] as const,
37+
}),
38+
)
39+
.sort(([a], [b]) => a - b),
40+
),
41+
Effect.catchAllDefect(_ =>
42+
Effect.as(
43+
Effect.logDebug(`Could not load migrations from disk: ${_}`),
44+
[],
45+
),
46+
),
47+
)

packages/sqlite/src/MigratorNode.ts renamed to packages/sqlite/src/Migrator/Node.ts

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,31 @@ import * as Effect from "@effect/io/Effect"
55
import * as Layer from "@effect/io/Layer"
66
import type { SqlError } from "@sqlfx/sql/Error"
77
import * as _ from "@sqlfx/sql/Migrator"
8-
import type { SqliteClient } from "@sqlfx/sqlite/node"
8+
import { fromDisk } from "@sqlfx/sql/Migrator/Node"
99
import * as internal from "@sqlfx/sqlite/internal/client"
10+
import type { SqliteClient } from "@sqlfx/sqlite/node"
11+
import { execFile } from "node:child_process"
12+
import * as NFS from "node:fs"
13+
import * as Path from "node:path"
1014

11-
const { fromBabelGlob, fromDisk, fromGlob } = _
15+
const { fromBabelGlob, fromGlob } = _
1216

1317
export {
1418
/**
1519
* @category loader
1620
* @since 1.0.0
1721
*/
18-
fromDisk,
22+
fromBabelGlob,
1923
/**
2024
* @category loader
2125
* @since 1.0.0
2226
*/
23-
fromGlob,
27+
fromDisk,
2428
/**
2529
* @category loader
2630
* @since 1.0.0
2731
*/
28-
fromBabelGlob,
32+
fromGlob,
2933
}
3034

3135
/**
@@ -51,12 +55,6 @@ export const run: (
5155
},
5256
dumpSchema: (sql, path, table) =>
5357
Effect.gen(function* ($) {
54-
const { execFile } = yield* $(
55-
Effect.promise(() => import("node:child_process")),
56-
)
57-
const NFS = yield* $(Effect.promise(() => import("node:fs")))
58-
const Path = yield* $(Effect.promise(() => import("node:path")))
59-
6058
const sqliteDump = (args: Array<string>) =>
6159
Effect.map(
6260
Effect.async<never, _.MigrationError, string>(resume => {

0 commit comments

Comments
 (0)