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
Your weekly dose of JavaScript news. Delivered every Monday to over 100,000 devs, for free.
Your weekly dose of JavaScript news. Delivered every Monday to over 100,000 devs, for free.
