@livestore/livestore 0.0.40 → 0.0.41-dev.1
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/dist/.tsbuildinfo +1 -1
- package/dist/cud.d.ts.map +1 -1
- package/dist/cud.js +1 -3
- package/dist/cud.js.map +1 -1
- package/dist/react/useQuery.test copy.d.ts +2 -0
- package/dist/react/useQuery.test copy.d.ts.map +1 -0
- package/dist/react/useQuery.test copy.js +44 -0
- package/dist/react/useQuery.test copy.js.map +1 -0
- package/dist/react/useRow.d.ts.map +1 -1
- package/dist/react/useRow.js +3 -2
- package/dist/react/useRow.js.map +1 -1
- package/dist/react/useTemporaryQuery.d.ts.map +1 -1
- package/dist/react/useTemporaryQuery.js +3 -2
- package/dist/react/useTemporaryQuery.js.map +1 -1
- package/dist/react/useTemporaryQuery.test.d.ts +2 -0
- package/dist/react/useTemporaryQuery.test.d.ts.map +1 -0
- package/dist/react/useTemporaryQuery.test.js +33 -0
- package/dist/react/useTemporaryQuery.test.js.map +1 -0
- package/dist/react/utils/useCleanup.d.ts +7 -0
- package/dist/react/utils/useCleanup.d.ts.map +1 -0
- package/dist/react/utils/useCleanup.js +24 -0
- package/dist/react/utils/useCleanup.js.map +1 -0
- package/dist/row-query.js +2 -2
- package/dist/row-query.js.map +1 -1
- package/dist/schema/table-def.d.ts +1 -1
- package/dist/schema/table-def.d.ts.map +1 -1
- package/dist/schema/table-def.js +13 -5
- package/dist/schema/table-def.js.map +1 -1
- package/package.json +4 -4
- package/src/cud.ts +1 -6
- package/src/react/useRow.ts +4 -4
- package/src/react/useTemporaryQuery.test.tsx +51 -0
- package/src/react/useTemporaryQuery.ts +4 -4
- package/src/react/utils/useCleanup.ts +30 -0
- package/src/row-query.ts +2 -5
- package/src/schema/table-def.ts +16 -10
package/src/row-query.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { shouldNeverHappen } from '@livestore/utils'
|
|
2
|
-
import {
|
|
2
|
+
import { Schema, TreeFormatter } from '@livestore/utils/effect'
|
|
3
3
|
import type * as otel from '@opentelemetry/api'
|
|
4
4
|
import { SqliteAst, SqliteDsl } from 'effect-db-schema'
|
|
5
5
|
|
|
@@ -138,10 +138,7 @@ const insertRowWithDefaultValuesOrIgnore = ({
|
|
|
138
138
|
otelContext: otel.Context
|
|
139
139
|
defaultValues: Partial<RowResult<TableDef>> | undefined
|
|
140
140
|
}) => {
|
|
141
|
-
const defaultValues =
|
|
142
|
-
getDefaultValuesEncoded(table),
|
|
143
|
-
ReadonlyRecord.map((val, columnName) => explicitDefaultValues?.[columnName] ?? val),
|
|
144
|
-
)
|
|
141
|
+
const defaultValues = getDefaultValuesEncoded(table, explicitDefaultValues)
|
|
145
142
|
|
|
146
143
|
const defaultColumnNames = [...Object.keys(defaultValues), 'id']
|
|
147
144
|
const columnValues = defaultColumnNames.map((name) => `$${name}`).join(', ')
|
package/src/schema/table-def.ts
CHANGED
|
@@ -156,19 +156,25 @@ export const tableIsSingleton = <TTableDef extends TableDef>(
|
|
|
156
156
|
tableDef: TTableDef,
|
|
157
157
|
): tableDef is TTableDef & { options: { isSingleton: true } } => tableDef.options.isSingleton === true
|
|
158
158
|
|
|
159
|
-
export const getDefaultValuesEncoded = <TTableDef extends TableDef>(
|
|
159
|
+
export const getDefaultValuesEncoded = <TTableDef extends TableDef>(
|
|
160
|
+
tableDef: TTableDef,
|
|
161
|
+
fallbackValues?: Record<string, any>,
|
|
162
|
+
) =>
|
|
160
163
|
pipe(
|
|
161
164
|
tableDef.sqliteDef.columns,
|
|
162
|
-
ReadonlyRecord.filter((
|
|
163
|
-
|
|
164
|
-
(
|
|
165
|
-
|
|
165
|
+
ReadonlyRecord.filter((col, key) => {
|
|
166
|
+
if (fallbackValues?.[key] !== undefined) return true
|
|
167
|
+
if (key === 'id') return false
|
|
168
|
+
return col!.default._tag === 'None' || SqliteDsl.isSqlDefaultValue(col!.default.value) === false
|
|
169
|
+
}),
|
|
166
170
|
ReadonlyRecord.map((column, columnName) =>
|
|
167
|
-
|
|
168
|
-
? column!.
|
|
169
|
-
?
|
|
170
|
-
|
|
171
|
-
|
|
171
|
+
fallbackValues?.[columnName] === undefined
|
|
172
|
+
? column!.default._tag === 'None'
|
|
173
|
+
? column!.nullable === true
|
|
174
|
+
? null
|
|
175
|
+
: shouldNeverHappen(`Column ${columnName} has no default value and is not nullable`)
|
|
176
|
+
: Schema.encodeSync(column!.schema)(column!.default.value)
|
|
177
|
+
: fallbackValues[columnName],
|
|
172
178
|
),
|
|
173
179
|
)
|
|
174
180
|
|