Type Reference
All exported TypeScript types
import type {
ID,
FieldType,
FieldDefinition,
IndexDefinition,
RelationType,
RelationDefinition,
CollectionSchema,
SchemaConfig,
QueryOperator,
QueryCondition,
QueryStrategy,
SortSpec,
QueryPlan,
ChangeType,
ChangeEvent,
CtroDBPlugin,
TransactionContext,
StorageAdapter,
LogLevel,
} from "ctrodb"
ID
type ID = number | string
FieldType
type FieldType = "string" | "number" | "boolean" | "object" | "array"
FieldDefinition
interface FieldDefinition {
type: FieldType
required?: boolean
default?: unknown
validate?: "email" | "url" | RegExp | ((value: unknown) => boolean)
min?: number
max?: number
maxLength?: number
items?: FieldDefinition
unique?: boolean
}
IndexDefinition
interface IndexDefinition {
field: string
unique?: boolean
}
RelationType
type RelationType = "has_many" | "belongs_to" | "has_one"
RelationDefinition
interface RelationDefinition {
type: RelationType
collection: string
foreignKey: string
}
CollectionSchema
interface CollectionSchema {
fields: Record<string, FieldDefinition>
indexes?: IndexDefinition[]
searchable?: string[]
relations?: Record<string, RelationDefinition>
}
SchemaConfig
interface SchemaConfig {
version: number
collections: Record<string, CollectionSchema>
}
QueryOperator
type QueryOperator = "==" | "!=" | ">" | "<" | ">=" | "<="
QueryCondition
interface QueryCondition {
type: "where" | "search"
field: string
op?: QueryOperator
value: unknown
}
QueryStrategy
type QueryStrategy = "index_scan" | "full_scan" | "id_lookup"
SortSpec
interface SortSpec {
field: string
direction: "asc" | "desc"
}
QueryPlan
interface QueryPlan {
strategy: QueryStrategy
indexName?: string
range?: IDBKeyRange
primaryConditions: QueryCondition[]
postFilterConditions: QueryCondition[]
sort?: SortSpec
limit?: number
offset?: number
groupType: "single" | "or"
groups?: QueryPlan[]
}
ChangeType
type ChangeType = "create" | "update" | "delete"
ChangeEvent
interface ChangeEvent {
type: ChangeType
collection: string
recordId: ID
record?: unknown
oldRecord?: unknown
}
CtroDBPlugin
interface CtroDBPlugin {
name: string
version?: string
onDatabaseInit?(db: unknown): void
onCollectionInit?(collection: unknown): void
onBeforeCreate?(collection: string, data: unknown): unknown
onAfterCreate?(collection: string, record: unknown): void
onBeforeUpdate?(collection: string, id: ID, changes: unknown): unknown
onAfterUpdate?(collection: string, id: ID, record: unknown, oldRecord?: unknown): void
onBeforeDelete?(collection: string, id: ID): void
onAfterDelete?(collection: string, id: ID, oldRecord?: unknown): void
}
TransactionContext
interface TransactionContext {
collection(name: string): unknown
}
StorageAdapter
interface StorageAdapter {
readonly name: string
connect(name: string, schema: SchemaConfig | null): Promise<void>
disconnect(): Promise<void>
isConnected(): boolean
getSchemaVersion(): Promise<number>
setSchemaVersion(version: number): Promise<void>
create(collection: string, data: unknown): Promise<unknown>
findById(collection: string, id: ID): Promise<unknown>
findAll(collection: string): Promise<unknown[]>
update(collection: string, id: ID, changes: unknown): Promise<unknown>
delete(collection: string, id: ID): Promise<void>
deleteMany(collection: string, ids: ID[]): Promise<void>
scanIndex(collection: string, indexName: string, range: IDBKeyRange | undefined, postFilters: QueryCondition[]): Promise<unknown[]>
transaction<T>(fn: (ctx: TransactionContext) => Promise<T>): Promise<T>
getMetadata(key: string): Promise<unknown>
setMetadata(key: string, value: unknown): Promise<void>
}
LogLevel
type LogLevel = "debug" | "info" | "warn" | "error" | "silent"How is this guide?
Last updated on Jun 20, 2026