@livestore/common 0.0.48-dev.4 → 0.0.48-dev.6

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.
@@ -0,0 +1,49 @@
1
+ import { shouldNeverHappen } from '@livestore/utils'
2
+ import { pipe, ReadonlyRecord, Schema } from '@livestore/utils/effect'
3
+ import { SqliteDsl } from 'effect-db-schema'
4
+
5
+ import type { TableDef } from './table-def.js'
6
+
7
+ export const getDefaultValuesEncoded = <TTableDef extends TableDef>(
8
+ tableDef: TTableDef,
9
+ fallbackValues?: Record<string, any>,
10
+ ) =>
11
+ pipe(
12
+ tableDef.sqliteDef.columns,
13
+ ReadonlyRecord.filter((col, key) => {
14
+ if (fallbackValues?.[key] !== undefined) return true
15
+ if (key === 'id') return false
16
+ return col!.default._tag === 'None' || SqliteDsl.isSqlDefaultValue(col!.default.value) === false
17
+ }),
18
+ ReadonlyRecord.map((column, columnName) =>
19
+ fallbackValues?.[columnName] === undefined
20
+ ? column!.default._tag === 'None'
21
+ ? column!.nullable === true
22
+ ? null
23
+ : shouldNeverHappen(`Column ${columnName} has no default value and is not nullable`)
24
+ : Schema.encodeSync(column!.schema)(column!.default.value)
25
+ : fallbackValues[columnName],
26
+ ),
27
+ )
28
+
29
+ export const getDefaultValuesDecoded = <TTableDef extends TableDef>(
30
+ tableDef: TTableDef,
31
+ fallbackValues?: Record<string, any>,
32
+ ) =>
33
+ pipe(
34
+ tableDef.sqliteDef.columns,
35
+ ReadonlyRecord.filter((col, key) => {
36
+ if (fallbackValues?.[key] !== undefined) return true
37
+ if (key === 'id') return false
38
+ return col!.default._tag === 'None' || SqliteDsl.isSqlDefaultValue(col!.default.value) === false
39
+ }),
40
+ ReadonlyRecord.map((column, columnName) =>
41
+ fallbackValues?.[columnName] === undefined
42
+ ? column!.default._tag === 'None'
43
+ ? column!.nullable === true
44
+ ? null
45
+ : shouldNeverHappen(`Column ${columnName} has no default value and is not nullable`)
46
+ : Schema.validateSync(column!.schema)(column!.default.value)
47
+ : fallbackValues[columnName],
48
+ ),
49
+ )
@@ -1,5 +1,5 @@
1
1
  import { shouldNeverHappen } from '@livestore/utils'
2
- import { pipe, ReadonlyRecord, Schema } from '@livestore/utils/effect'
2
+ import { ReadonlyRecord, Schema } from '@livestore/utils/effect'
3
3
  import type { Nullable, PrettifyFlat } from 'effect-db-schema'
4
4
  import { SqliteDsl } from 'effect-db-schema'
5
5
 
@@ -224,50 +224,6 @@ export const tableIsSingleton = <TTableDef extends TableDef>(
224
224
  tableDef: TTableDef,
225
225
  ): tableDef is TTableDef & { options: { isSingleton: true } } => tableDef.options.isSingleton === true
226
226
 
227
- export const getDefaultValuesEncoded = <TTableDef extends TableDef>(
228
- tableDef: TTableDef,
229
- fallbackValues?: Record<string, any>,
230
- ) =>
231
- pipe(
232
- tableDef.sqliteDef.columns,
233
- ReadonlyRecord.filter((col, key) => {
234
- if (fallbackValues?.[key] !== undefined) return true
235
- if (key === 'id') return false
236
- return col!.default._tag === 'None' || SqliteDsl.isSqlDefaultValue(col!.default.value) === false
237
- }),
238
- ReadonlyRecord.map((column, columnName) =>
239
- fallbackValues?.[columnName] === undefined
240
- ? column!.default._tag === 'None'
241
- ? column!.nullable === true
242
- ? null
243
- : shouldNeverHappen(`Column ${columnName} has no default value and is not nullable`)
244
- : Schema.encodeSync(column!.schema)(column!.default.value)
245
- : fallbackValues[columnName],
246
- ),
247
- )
248
-
249
- export const getDefaultValuesDecoded = <TTableDef extends TableDef>(
250
- tableDef: TTableDef,
251
- fallbackValues?: Record<string, any>,
252
- ) =>
253
- pipe(
254
- tableDef.sqliteDef.columns,
255
- ReadonlyRecord.filter((col, key) => {
256
- if (fallbackValues?.[key] !== undefined) return true
257
- if (key === 'id') return false
258
- return col!.default._tag === 'None' || SqliteDsl.isSqlDefaultValue(col!.default.value) === false
259
- }),
260
- ReadonlyRecord.map((column, columnName) =>
261
- fallbackValues?.[columnName] === undefined
262
- ? column!.default._tag === 'None'
263
- ? column!.nullable === true
264
- ? null
265
- : shouldNeverHappen(`Column ${columnName} has no default value and is not nullable`)
266
- : Schema.validateSync(column!.schema)(column!.default.value)
267
- : fallbackValues[columnName],
268
- ),
269
- )
270
-
271
227
  type WithId<TColumns extends SqliteDsl.Columns, TOptions extends TableOptions> = TColumns &
272
228
  ('id' extends keyof TColumns
273
229
  ? {}