DB Docs
API Reference
- Core API Reference
- Collection
- createCollection
- liveQueryCollectionOptions
- createLiveQueryCollection
- createOptimisticAction
- createTransaction
- Electric DB Collection
- electricCollectionOptions
- Query DB Collection
- queryCollectionOptions
- RxDB DB Collection
- rxdbCollectionOptions
- PowerSync Collection
- powerSyncCollectionOptions
- createIndexedDB
- indexedDBCollectionOptions
- React Hooks
- useLiveQuery
AI/LLM: This documentation page is available in plain markdown format at/db/latest/docs/reference/powersync-db-collection/type-aliases/CustomSQLiteSerializer.md
CustomSQLiteSerializer
ts
type CustomSQLiteSerializer<TOutput, TSQLite> = Partial<{ [Key in keyof TOutput]: (value: TOutput[Key]) => Key extends keyof TSQLite ? TSQLite[Key] : never }>;Defined in: definitions.ts:56
A mapping type for custom serialization of object properties to SQLite-compatible values.
This type allows you to override, for keys in the input object (TOutput), a function that transforms the value to the corresponding SQLite type (TSQLite). Keys not specified will use the default SQLite serialization.
Generics#
- TOutput: The input object type, representing the row data to be serialized.
- TSQLite: The target SQLite-compatible type for each property, typically inferred from the table schema.
Usage#
Use this type to define a map of serialization functions for specific keys when you need custom handling (e.g., converting complex objects, formatting dates, or handling enums).
Example:
ts
const serializer: CustomSQLiteSerializer<MyRowType, MySQLiteType> = {
createdAt: (date) => date.toISOString(),
status: (status) => status ? 1 : 0,
meta: (meta) => JSON.stringify(meta),
};Behavior#
- Each key maps to a function that receives the value and returns the SQLite-compatible value.
- Used by serializeForSQLite to override default serialization for specific columns.
Type Parameters#
TOutput#
TOutput extends Record<string, unknown>
TSQLite#
TSQLite extends Record<string, unknown>