{
"typescriptOutputPath": "../../examples/todo-app/generated/typescript/syncular.generated.ts",
"typescriptServerOutputPath": "../../examples/todo-app/generated/typescript/syncular.server.generated.ts",
"typescriptRuntimeImportPath": "../../../../../packages/client/src",
"rustRuntimeCratePath": "syncular_runtime",
"nativeSwiftOutputPath": "../../examples/todo-app/generated/swift/SyncularApp.swift",
"nativeKotlinOutputPath": "../../examples/todo-app/generated/kotlin/SyncularApp.kt",
"nativeAndroidKotlinOutputPath": "../../examples/todo-app/generated/kotlin/android/SyncularApp.kt",
"nativeAndroidKotlinPackage": "dev.syncular.client.generated",
"clientSchemaSupport": {
"minSupported": 6
},
"localOnlyTables": ["local_preferences"],
"localReadModels": [
{
"name": "taskCountsByUserCompletion",
"kind": "countBy",
"sourceTable": "tasks",
"outputTable": "syncular_task_counts",
"dimensions": ["user_id", "completed"],
"countColumn": "task_count"
}
],
"tables": {
"projects": {
"subscriptionId": "sub-projects",
"scopes": [
{
"name": "user_id",
"column": "owner_id",
"source": "actorId",
"required": true
}
],
"serverVersionColumn": "server_version",
"sqliteWithoutRowid": true
},
"tasks": {
"subscriptionId": "sub-tasks",
"scopes": [
{
"name": "user_id",
"column": "user_id",
"source": "actorId",
"required": true
},
{
"name": "project_id",
"column": "project_id",
"source": "projectId",
"required": false
}
],
"serverVersionColumn": "server_version",
"sqliteWithoutRowid": true,
"blobColumns": ["image"],
"encryptedFields": [
{
"field": "description",
"scope": "tasks"
}
],
"crdtYjsFields": [
{
"field": "title",
"stateColumn": "title_yjs_state",
"containerKey": "title",
"kind": "text"
}
]
},
"comments": {
"subscriptionId": "sub-comments",
"scopes": [
{
"name": "user_id",
"column": "author_id",
"source": "actorId",
"required": true
},
{
"name": "project_id",
"column": "project_id",
"source": "projectId",
"required": false
}
],
"serverVersionColumn": "server_version",
"softDeleteColumn": "deleted",
"sqliteWithoutRowid": true
}
}
}