Defined in: packages/db/src/local-only.ts:22
Configuration interface for Local-only collection options
T extends object = object
The type of items in the collection
TSchema extends StandardSchemaV1 = never
The schema type for validation
TKey extends string | number = string | number
The type of the key returned by getKey
optional autoIndex: "eager" | "off";
optional autoIndex: "eager" | "off";
Defined in: packages/db/src/types.ts:434
Auto-indexing mode for the collection. When enabled, indexes will be automatically created for simple where expressions.
"eager"
"eager"
BaseCollectionConfig.autoIndex
optional compare: (x, y) => number;
optional compare: (x, y) => number;
Defined in: packages/db/src/types.ts:445
Optional function to compare two items. This is used to order the items in the collection.
T
The first item to compare
T
The second item to compare
number
A number indicating the order of the items
// For a collection with a 'createdAt' field
compare: (x, y) => x.createdAt.getTime() - y.createdAt.getTime()
// For a collection with a 'createdAt' field
compare: (x, y) => x.createdAt.getTime() - y.createdAt.getTime()
Omit.compare
Omit.compare
getKey: (item) => TKey;
getKey: (item) => TKey;
Defined in: packages/db/src/types.ts:409
Function to extract the ID from an object This is required for update/delete operations which now only accept IDs
T
The item to extract the ID from
TKey
The ID string for the item
// For a collection with a 'uuid' field as the primary key
getKey: (item) => item.uuid
// For a collection with a 'uuid' field as the primary key
getKey: (item) => item.uuid
Omit.getKey
Omit.getKey
optional id: string;
optional id: string;
Defined in: packages/db/src/types.ts:398
optional initialData: T[];
optional initialData: T[];
Defined in: packages/db/src/local-only.ts:34
Optional initial data to populate the collection with on creation This data will be applied during the initial sync process
optional onDelete: DeleteMutationFn<T, TKey, LocalOnlyCollectionUtils, any>;
optional onDelete: DeleteMutationFn<T, TKey, LocalOnlyCollectionUtils, any>;
Defined in: packages/db/src/types.ts:583
Optional asynchronous handler function called before a delete operation
Object containing transaction and collection information
Promise resolving to any value
// Basic delete handler
onDelete: async ({ transaction, collection }) => {
const deletedKey = transaction.mutations[0].key
await api.deleteTodo(deletedKey)
}
// Basic delete handler
onDelete: async ({ transaction, collection }) => {
const deletedKey = transaction.mutations[0].key
await api.deleteTodo(deletedKey)
}
// Delete handler with multiple items
onDelete: async ({ transaction, collection }) => {
const keysToDelete = transaction.mutations.map(m => m.key)
await api.deleteTodos(keysToDelete)
}
// Delete handler with multiple items
onDelete: async ({ transaction, collection }) => {
const keysToDelete = transaction.mutations.map(m => m.key)
await api.deleteTodos(keysToDelete)
}
// Delete handler with confirmation
onDelete: async ({ transaction, collection }) => {
const mutation = transaction.mutations[0]
const shouldDelete = await confirmDeletion(mutation.original)
if (!shouldDelete) {
throw new Error('Delete cancelled by user')
}
await api.deleteTodo(mutation.original.id)
}
// Delete handler with confirmation
onDelete: async ({ transaction, collection }) => {
const mutation = transaction.mutations[0]
const shouldDelete = await confirmDeletion(mutation.original)
if (!shouldDelete) {
throw new Error('Delete cancelled by user')
}
await api.deleteTodo(mutation.original.id)
}
// Delete handler with optimistic rollback
onDelete: async ({ transaction, collection }) => {
const mutation = transaction.mutations[0]
try {
await api.deleteTodo(mutation.original.id)
} catch (error) {
// Transaction will automatically rollback optimistic changes
console.error('Delete failed, rolling back:', error)
throw error
}
}
// Delete handler with optimistic rollback
onDelete: async ({ transaction, collection }) => {
const mutation = transaction.mutations[0]
try {
await api.deleteTodo(mutation.original.id)
} catch (error) {
// Transaction will automatically rollback optimistic changes
console.error('Delete failed, rolling back:', error)
throw error
}
}
Omit.onDelete
Omit.onDelete
optional onInsert: InsertMutationFn<T, TKey, LocalOnlyCollectionUtils, any>;
optional onInsert: InsertMutationFn<T, TKey, LocalOnlyCollectionUtils, any>;
Defined in: packages/db/src/types.ts:496
Optional asynchronous handler function called before an insert operation
Object containing transaction and collection information
Promise resolving to any value
// Basic insert handler
onInsert: async ({ transaction, collection }) => {
const newItem = transaction.mutations[0].modified
await api.createTodo(newItem)
}
// Basic insert handler
onInsert: async ({ transaction, collection }) => {
const newItem = transaction.mutations[0].modified
await api.createTodo(newItem)
}
// Insert handler with multiple items
onInsert: async ({ transaction, collection }) => {
const items = transaction.mutations.map(m => m.modified)
await api.createTodos(items)
}
// Insert handler with multiple items
onInsert: async ({ transaction, collection }) => {
const items = transaction.mutations.map(m => m.modified)
await api.createTodos(items)
}
// Insert handler with error handling
onInsert: async ({ transaction, collection }) => {
try {
const newItem = transaction.mutations[0].modified
const result = await api.createTodo(newItem)
return result
} catch (error) {
console.error('Insert failed:', error)
throw error // This will cause the transaction to fail
}
}
// Insert handler with error handling
onInsert: async ({ transaction, collection }) => {
try {
const newItem = transaction.mutations[0].modified
const result = await api.createTodo(newItem)
return result
} catch (error) {
console.error('Insert failed:', error)
throw error // This will cause the transaction to fail
}
}
// Insert handler with metadata
onInsert: async ({ transaction, collection }) => {
const mutation = transaction.mutations[0]
await api.createTodo(mutation.modified, {
source: mutation.metadata?.source,
timestamp: mutation.createdAt
})
}
// Insert handler with metadata
onInsert: async ({ transaction, collection }) => {
const mutation = transaction.mutations[0]
await api.createTodo(mutation.modified, {
source: mutation.metadata?.source,
timestamp: mutation.createdAt
})
}
Omit.onInsert
Omit.onInsert
optional onUpdate: UpdateMutationFn<T, TKey, LocalOnlyCollectionUtils, any>;
optional onUpdate: UpdateMutationFn<T, TKey, LocalOnlyCollectionUtils, any>;
Defined in: packages/db/src/types.ts:540
Optional asynchronous handler function called before an update operation
Object containing transaction and collection information
Promise resolving to any value
// Basic update handler
onUpdate: async ({ transaction, collection }) => {
const updatedItem = transaction.mutations[0].modified
await api.updateTodo(updatedItem.id, updatedItem)
}
// Basic update handler
onUpdate: async ({ transaction, collection }) => {
const updatedItem = transaction.mutations[0].modified
await api.updateTodo(updatedItem.id, updatedItem)
}
// Update handler with partial updates
onUpdate: async ({ transaction, collection }) => {
const mutation = transaction.mutations[0]
const changes = mutation.changes // Only the changed fields
await api.updateTodo(mutation.original.id, changes)
}
// Update handler with partial updates
onUpdate: async ({ transaction, collection }) => {
const mutation = transaction.mutations[0]
const changes = mutation.changes // Only the changed fields
await api.updateTodo(mutation.original.id, changes)
}
// Update handler with multiple items
onUpdate: async ({ transaction, collection }) => {
const updates = transaction.mutations.map(m => ({
id: m.key,
changes: m.changes
}))
await api.updateTodos(updates)
}
// Update handler with multiple items
onUpdate: async ({ transaction, collection }) => {
const updates = transaction.mutations.map(m => ({
id: m.key,
changes: m.changes
}))
await api.updateTodos(updates)
}
// Update handler with optimistic rollback
onUpdate: async ({ transaction, collection }) => {
const mutation = transaction.mutations[0]
try {
await api.updateTodo(mutation.original.id, mutation.changes)
} catch (error) {
// Transaction will automatically rollback optimistic changes
console.error('Update failed, rolling back:', error)
throw error
}
}
// Update handler with optimistic rollback
onUpdate: async ({ transaction, collection }) => {
const mutation = transaction.mutations[0]
try {
await api.updateTodo(mutation.original.id, mutation.changes)
} catch (error) {
// Transaction will automatically rollback optimistic changes
console.error('Update failed, rolling back:', error)
throw error
}
}
Omit.onUpdate
Omit.onUpdate
optional schema: TSchema;
optional schema: TSchema;
Defined in: packages/db/src/types.ts:399
Omit.schema
Omit.schema
optional syncMode: SyncMode;
optional syncMode: SyncMode;
Defined in: packages/db/src/types.ts:454
The mode of sync to use for the collection.
eager
optional utils: LocalOnlyCollectionUtils;
optional utils: LocalOnlyCollectionUtils;
Defined in: packages/db/src/types.ts:585
Omit.utils
Omit.utils