1import { IndexedDbTable, IndexedDbVersion } from "@effect/platform-browser"
2import { assert, describe, it } from "@effect/vitest"
3import { Schema } from "effect"
4
5describe("IndexedDbVersion", () => {
6 it("make single table", () => {
7 class Table1 extends IndexedDbTable.make({
8 name: "todo1",
9 schema: Schema.Struct({
10 id: Schema.Number,
11 title: Schema.String,
12 completed: Schema.Boolean
13 }),
14 keyPath: "id"
15 }) {}
16
17 class Db extends IndexedDbVersion.make(Table1) {}
18
19 assert.equal(Db.tables.size, 1)
20 assert.equal(Db.tables.get("todo1"), Table1)
21 })
22
23 it("make multiple tables", () => {
24 class Table1 extends IndexedDbTable.make({
25 name: "todo1",
26 schema: Schema.Struct({
27 id: Schema.Number,
28 title: Schema.String,
29 completed: Schema.Boolean
30 }),
31 keyPath: "id"
32 }) {}
33
34 class Table2 extends IndexedDbTable.make({
35 name: "todo2",
36 schema: Schema.Struct({
37 id: Schema.Number,
38 title: Schema.String,
39 completed: Schema.Boolean
40 }),
41 keyPath: "id"
42 }) {}
43
44 class Db extends IndexedDbVersion.make(Table1, Table2) {}
45
46 assert.equal(Db.tables.size, 2)
47 assert.equal(Db.tables.get("todo1"), Table1)
48 assert.equal(Db.tables.get("todo2"), Table2)
49 })
50})