|
1 | 1 | import { ParseResult, Schema } from "effect"; |
2 | | -import { LoroDoc, LoroMap } from "loro-crdt"; |
3 | | -import { VERSION } from "./main"; |
4 | | -import { AnyLoroDocSchema, type ActivityV1, type ActivityV2 } from "./schema"; |
| 2 | +import { LoroDoc } from "loro-crdt"; |
| 3 | +import { SnapshotSchema } from "./main"; |
| 4 | +import { AnyLoroDocSchema } from "./schema"; |
5 | 5 | import { Version } from "./versioning"; |
6 | 6 |
|
7 | 7 | const migrations = { |
8 | | - 1: (doc) => { |
9 | | - doc.getMap("metadata").set("version", VERSION); |
10 | | - doc.getList("activity"); |
11 | | - return doc; |
12 | | - }, |
13 | | - |
14 | | - 2: (doc) => { |
15 | | - doc.getMap("metadata").set("version", 2); |
16 | | - |
17 | | - const activity = doc.getList("activity"); |
18 | | - for (let i = 0; i < activity.length; i++) { |
19 | | - const item = activity.get(i) as LoroMap<typeof ActivityV1.Encoded>; |
20 | | - const map = new LoroMap(); |
21 | | - const [firstName, lastName] = item.get("name").split(" "); |
22 | | - map.set("id", item.get("id")); |
23 | | - map.set("firstName", firstName); |
24 | | - map.set("lastName", lastName); |
25 | | - activity.insertContainer(i, map); |
26 | | - } |
27 | | - |
28 | | - return doc; |
29 | | - }, |
30 | | - |
31 | | - 3: (doc) => { |
32 | | - doc.getMap("metadata").set("version", 3); |
33 | | - |
34 | | - const activity = doc.getList("activity"); |
35 | | - for (let i = 0; i < activity.length; i++) { |
36 | | - const item = activity.get(i) as LoroMap<typeof ActivityV2.Encoded>; |
37 | | - const map = new LoroMap(); |
38 | | - map.set("id", item.get("id")); |
39 | | - map.set("firstName", item.get("firstName")); |
40 | | - map.set("lastName", item.get("lastName")); |
41 | | - map.set("age", undefined); |
42 | | - activity.insertContainer(i, map); |
43 | | - } |
44 | | - |
45 | | - return doc; |
46 | | - }, |
| 8 | + 1: (_) => SnapshotSchema.EmptyDoc(), |
47 | 9 | } satisfies Record<Version, (doc: LoroDoc) => LoroDoc>; |
48 | 10 |
|
49 | 11 | export const LoroDocMigration = AnyLoroDocSchema.pipe( |
|
0 commit comments