diff --git a/source/structure/r1.sindri.json b/source/structure/r1.sindri.json index 466e572..e757245 100644 --- a/source/structure/r1.sindri.json +++ b/source/structure/r1.sindri.json @@ -29,16 +29,36 @@ "name": "id" }, "data_fields": [ + { + "name": "name", + "type": "string_medium", + "nullable": false + } ], "constraints": [ ] }, { - "name": "events", + "name": "local_resources", "key_field": { "name": "id" }, "data_fields": [ + ], + "constraints": [ + ] + }, + { + "name": "local_resource_events", + "key_field": { + "name": "id" + }, + "data_fields": [ + { + "name": "local_resource_id", + "type": "integer", + "nullable": false + }, { "name": "name", "type": "string_medium", @@ -65,6 +85,58 @@ "nullable": true } ], + "constraints": [ + { + "kind": "foreign_key", + "parameters": { + "fields": ["local_resource_id"], + "reference": { + "name": "local_resources", + "fields": ["id"] + } + } + } + ] + }, + { + "name": "caldav_resources", + "key_field": { + "name": "id" + }, + "data_fields": [ + { + "name": "url", + "type": "string_medium", + "nullable": false + }, + { + "name": "read_only", + "type": "boolean", + "nullable": false + } + ], + "constraints": [ + ] + }, + { + "name": "resources", + "key_field": { + "name": "id" + }, + "data_fields": [ + { + "name": "kind", + "type": "string_short", + "nullable": false, + "description": "»local« | »caldav«" + }, + { + "name": "sub_id", + "type": "integer", + "nullable": false, + "description": "local_resources.id | caldav_resources.id" + } + ], "constraints": [ ] }, @@ -80,22 +152,79 @@ "nullable": false }, { - "name": "private", + "name": "public", "type": "boolean", "nullable": false }, { - "name": "kind", - "type": "string_short", - "nullable": false - }, - { - "name": "data", - "type": "string_long", + "name": "resource_id", + "type": "integer", "nullable": false } ], "constraints": [ + { + "kind": "foreign_key", + "parameters": { + "fields": ["resource_id"], + "reference": { + "name": "resources", + "fields": ["id"] + } + } + } + ] + }, + { + "name": "calendar_members", + "key_field": { + "name": "id" + }, + "data_fields": [ + { + "name": "calendar_id", + "type": "integer", + "nullable": false + }, + { + "name": "user_id", + "type": "integer", + "nullable": false + }, + { + "name": "role", + "type": "string_medium", + "nullable": false, + "description": "»admin« | »editor« | »viewer«" + } + ], + "constraints": [ + { + "kind": "foreign_key", + "parameters": { + "fields": ["calendar_id"], + "reference": { + "name": "calendars", + "fields": ["id"] + } + } + }, + { + "kind": "foreign_key", + "parameters": { + "fields": ["user_id"], + "reference": { + "name": "users", + "fields": ["id"] + } + } + }, + { + "kind": "unique", + "parameters": { + "fields": ["calendar_id","user_id"] + } + } ] } ]