Compare commits
10 commits
5dc51fae7f
...
74218e885e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
74218e885e | ||
|
|
85605fd33a | ||
|
|
0f094c853f | ||
|
|
30a13783cd | ||
|
|
cc9ab1a6a2 | ||
|
|
cada0f26b7 | ||
|
|
e14c977aaa | ||
|
|
7bf2216905 | ||
|
|
5429c11d05 | ||
|
|
7fa88e6987 |
|
|
@ -8,4 +8,5 @@
|
|||
## Nutzung
|
||||
|
||||
- siehe `tools/build -h`
|
||||
- Beispiel: `path=/tmp/zeitbild.sqlite && rm ${path} -f | tools/build -f sqlite | sqlite3 ${path}`
|
||||
|
||||
|
|
|
|||
49
source/migrations/r3-r4.postgresql.sql
Normal file
49
source/migrations/r3-r4.postgresql.sql
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
-- users
|
||||
|
||||
ALTER TABLE
|
||||
"users"
|
||||
ADD COLUMN
|
||||
"dav_token" VARCHAR(255)
|
||||
;
|
||||
|
||||
|
||||
-- caldav_resources
|
||||
|
||||
ALTER TABLE
|
||||
"caldav_resources"
|
||||
RENAME TO
|
||||
"ics_feed_resources"
|
||||
;
|
||||
|
||||
ALTER TABLE
|
||||
"ics_feed_resources"
|
||||
DROP COLUMN
|
||||
"read_only"
|
||||
;
|
||||
|
||||
ALTER TABLE
|
||||
"ics_feed_resources"
|
||||
ADD COLUMN
|
||||
"from_fucked_up_wordpress" BOOLEAN NOT NULL
|
||||
;
|
||||
|
||||
COMMENT ON COLUMN
|
||||
"resources"."kind"
|
||||
IS
|
||||
'»local« | »ics_feed«'
|
||||
;
|
||||
|
||||
COMMENT ON COLUMN
|
||||
"resources"."sub_id"
|
||||
IS
|
||||
'local_resources.id | ics_feed_resources.id'
|
||||
;
|
||||
|
||||
|
||||
-- _meta
|
||||
|
||||
UPDATE
|
||||
"_meta"
|
||||
SET
|
||||
"revision" = 'r4'
|
||||
;
|
||||
284
source/structure/r2.sindri.json
Normal file
284
source/structure/r2.sindri.json
Normal file
|
|
@ -0,0 +1,284 @@
|
|||
{
|
||||
"domains": [
|
||||
{
|
||||
"name": "sessions",
|
||||
"data_fields": [
|
||||
{
|
||||
"name": "key",
|
||||
"type": "string_medium",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "data",
|
||||
"type": "string_long",
|
||||
"nullable": false,
|
||||
"description": "JSON"
|
||||
}
|
||||
],
|
||||
"constraints": [
|
||||
{
|
||||
"kind": "unique",
|
||||
"parameters": {
|
||||
"fields": ["key"]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "auth_internal",
|
||||
"key_field": null,
|
||||
"data_fields": [
|
||||
{
|
||||
"name": "name",
|
||||
"type": "string_short",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "password_image",
|
||||
"type": "string_medium",
|
||||
"nullable": false
|
||||
}
|
||||
],
|
||||
"constraints": [
|
||||
{
|
||||
"kind": "unique",
|
||||
"parameters": {
|
||||
"fields": ["name"]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "users",
|
||||
"key_field": {
|
||||
"name": "id"
|
||||
},
|
||||
"data_fields": [
|
||||
{
|
||||
"name": "name",
|
||||
"type": "string_short",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "email_address",
|
||||
"type": "string_medium",
|
||||
"nullable": true
|
||||
}
|
||||
],
|
||||
"constraints": [
|
||||
{
|
||||
"kind": "unique",
|
||||
"parameters": {
|
||||
"fields": ["name"]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "local_resources",
|
||||
"key_field": {
|
||||
"name": "id"
|
||||
},
|
||||
"data_fields": [
|
||||
{
|
||||
"name": "_dummy",
|
||||
"type": "integer",
|
||||
"nullable": true
|
||||
}
|
||||
],
|
||||
"constraints": [
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "local_resource_events",
|
||||
"key_field": {
|
||||
"name": "id"
|
||||
},
|
||||
"data_fields": [
|
||||
{
|
||||
"name": "local_resource_id",
|
||||
"type": "integer",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "name",
|
||||
"type": "string_medium",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "begin",
|
||||
"type": "string_medium",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "end",
|
||||
"type": "string_medium",
|
||||
"nullable": true
|
||||
},
|
||||
{
|
||||
"name": "location",
|
||||
"type": "string_medium",
|
||||
"nullable": true
|
||||
},
|
||||
{
|
||||
"name": "description",
|
||||
"type": "string_long",
|
||||
"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": [
|
||||
{
|
||||
"kind": "unique",
|
||||
"parameters": {
|
||||
"fields": ["kind","sub_id"]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "calendars",
|
||||
"key_field": {
|
||||
"name": "id"
|
||||
},
|
||||
"data_fields": [
|
||||
{
|
||||
"name": "name",
|
||||
"type": "string_medium",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "access_public",
|
||||
"type": "boolean",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "access_level_default",
|
||||
"type": "integer",
|
||||
"nullable": false,
|
||||
"description": "0:none | 1:view | 2:edit | 3:admin"
|
||||
},
|
||||
{
|
||||
"name": "resource_id",
|
||||
"type": "integer",
|
||||
"nullable": false
|
||||
}
|
||||
],
|
||||
"constraints": [
|
||||
{
|
||||
"kind": "foreign_key",
|
||||
"parameters": {
|
||||
"fields": ["resource_id"],
|
||||
"reference": {
|
||||
"name": "resources",
|
||||
"fields": ["id"]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "calendar_access_attributed",
|
||||
"key_field": {
|
||||
"name": "id"
|
||||
},
|
||||
"data_fields": [
|
||||
{
|
||||
"name": "calendar_id",
|
||||
"type": "integer",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "user_id",
|
||||
"type": "integer",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "level",
|
||||
"type": "integer",
|
||||
"nullable": false,
|
||||
"description": "0:none | 1:view | 2:edit | 3:admin"
|
||||
}
|
||||
],
|
||||
"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"]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
289
source/structure/r3.sindri.json
Normal file
289
source/structure/r3.sindri.json
Normal file
|
|
@ -0,0 +1,289 @@
|
|||
{
|
||||
"domains": [
|
||||
{
|
||||
"name": "sessions",
|
||||
"data_fields": [
|
||||
{
|
||||
"name": "key",
|
||||
"type": "string_medium",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "data",
|
||||
"type": "string_long",
|
||||
"nullable": false,
|
||||
"description": "JSON"
|
||||
}
|
||||
],
|
||||
"constraints": [
|
||||
{
|
||||
"kind": "unique",
|
||||
"parameters": {
|
||||
"fields": ["key"]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "auth_internal",
|
||||
"key_field": null,
|
||||
"data_fields": [
|
||||
{
|
||||
"name": "name",
|
||||
"type": "string_short",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "password_image",
|
||||
"type": "string_medium",
|
||||
"nullable": false
|
||||
}
|
||||
],
|
||||
"constraints": [
|
||||
{
|
||||
"kind": "unique",
|
||||
"parameters": {
|
||||
"fields": ["name"]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "users",
|
||||
"key_field": {
|
||||
"name": "id"
|
||||
},
|
||||
"data_fields": [
|
||||
{
|
||||
"name": "name",
|
||||
"type": "string_short",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "email_address",
|
||||
"type": "string_medium",
|
||||
"nullable": true
|
||||
}
|
||||
],
|
||||
"constraints": [
|
||||
{
|
||||
"kind": "unique",
|
||||
"parameters": {
|
||||
"fields": ["name"]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "local_resources",
|
||||
"key_field": {
|
||||
"name": "id"
|
||||
},
|
||||
"data_fields": [
|
||||
{
|
||||
"name": "_dummy",
|
||||
"type": "integer",
|
||||
"nullable": true
|
||||
}
|
||||
],
|
||||
"constraints": [
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "local_resource_events",
|
||||
"key_field": {
|
||||
"name": "id"
|
||||
},
|
||||
"data_fields": [
|
||||
{
|
||||
"name": "local_resource_id",
|
||||
"type": "integer",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "name",
|
||||
"type": "string_medium",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "begin",
|
||||
"type": "string_medium",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "end",
|
||||
"type": "string_medium",
|
||||
"nullable": true
|
||||
},
|
||||
{
|
||||
"name": "location",
|
||||
"type": "string_medium",
|
||||
"nullable": true
|
||||
},
|
||||
{
|
||||
"name": "link",
|
||||
"type": "string_medium",
|
||||
"nullable": true
|
||||
},
|
||||
{
|
||||
"name": "description",
|
||||
"type": "string_long",
|
||||
"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": [
|
||||
{
|
||||
"kind": "unique",
|
||||
"parameters": {
|
||||
"fields": ["kind","sub_id"]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "calendars",
|
||||
"key_field": {
|
||||
"name": "id"
|
||||
},
|
||||
"data_fields": [
|
||||
{
|
||||
"name": "name",
|
||||
"type": "string_medium",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "access_public",
|
||||
"type": "boolean",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "access_level_default",
|
||||
"type": "integer",
|
||||
"nullable": false,
|
||||
"description": "0:none | 1:view | 2:edit | 3:admin"
|
||||
},
|
||||
{
|
||||
"name": "resource_id",
|
||||
"type": "integer",
|
||||
"nullable": false
|
||||
}
|
||||
],
|
||||
"constraints": [
|
||||
{
|
||||
"kind": "foreign_key",
|
||||
"parameters": {
|
||||
"fields": ["resource_id"],
|
||||
"reference": {
|
||||
"name": "resources",
|
||||
"fields": ["id"]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "calendar_access_attributed",
|
||||
"key_field": {
|
||||
"name": "id"
|
||||
},
|
||||
"data_fields": [
|
||||
{
|
||||
"name": "calendar_id",
|
||||
"type": "integer",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "user_id",
|
||||
"type": "integer",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "level",
|
||||
"type": "integer",
|
||||
"nullable": false,
|
||||
"description": "0:none | 1:view | 2:edit | 3:admin"
|
||||
}
|
||||
],
|
||||
"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"]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
294
source/structure/r4.sindri.json
Normal file
294
source/structure/r4.sindri.json
Normal file
|
|
@ -0,0 +1,294 @@
|
|||
{
|
||||
"domains": [
|
||||
{
|
||||
"name": "sessions",
|
||||
"data_fields": [
|
||||
{
|
||||
"name": "key",
|
||||
"type": "string_medium",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "data",
|
||||
"type": "string_long",
|
||||
"nullable": false,
|
||||
"description": "JSON"
|
||||
}
|
||||
],
|
||||
"constraints": [
|
||||
{
|
||||
"kind": "unique",
|
||||
"parameters": {
|
||||
"fields": ["key"]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "auth_internal",
|
||||
"key_field": null,
|
||||
"data_fields": [
|
||||
{
|
||||
"name": "name",
|
||||
"type": "string_short",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "password_image",
|
||||
"type": "string_medium",
|
||||
"nullable": false
|
||||
}
|
||||
],
|
||||
"constraints": [
|
||||
{
|
||||
"kind": "unique",
|
||||
"parameters": {
|
||||
"fields": ["name"]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "users",
|
||||
"key_field": {
|
||||
"name": "id"
|
||||
},
|
||||
"data_fields": [
|
||||
{
|
||||
"name": "name",
|
||||
"type": "string_short",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "email_address",
|
||||
"type": "string_medium",
|
||||
"nullable": true
|
||||
},
|
||||
{
|
||||
"name": "dav_token",
|
||||
"type": "string_medium",
|
||||
"nullable": true
|
||||
}
|
||||
],
|
||||
"constraints": [
|
||||
{
|
||||
"kind": "unique",
|
||||
"parameters": {
|
||||
"fields": ["name"]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "local_resources",
|
||||
"key_field": {
|
||||
"name": "id"
|
||||
},
|
||||
"data_fields": [
|
||||
{
|
||||
"name": "_dummy",
|
||||
"type": "integer",
|
||||
"nullable": true
|
||||
}
|
||||
],
|
||||
"constraints": [
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "local_resource_events",
|
||||
"key_field": {
|
||||
"name": "id"
|
||||
},
|
||||
"data_fields": [
|
||||
{
|
||||
"name": "local_resource_id",
|
||||
"type": "integer",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "name",
|
||||
"type": "string_medium",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "begin",
|
||||
"type": "string_medium",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "end",
|
||||
"type": "string_medium",
|
||||
"nullable": true
|
||||
},
|
||||
{
|
||||
"name": "location",
|
||||
"type": "string_medium",
|
||||
"nullable": true
|
||||
},
|
||||
{
|
||||
"name": "link",
|
||||
"type": "string_medium",
|
||||
"nullable": true
|
||||
},
|
||||
{
|
||||
"name": "description",
|
||||
"type": "string_long",
|
||||
"nullable": true
|
||||
}
|
||||
],
|
||||
"constraints": [
|
||||
{
|
||||
"kind": "foreign_key",
|
||||
"parameters": {
|
||||
"fields": ["local_resource_id"],
|
||||
"reference": {
|
||||
"name": "local_resources",
|
||||
"fields": ["id"]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "ics_feed_resources",
|
||||
"key_field": {
|
||||
"name": "id"
|
||||
},
|
||||
"data_fields": [
|
||||
{
|
||||
"name": "url",
|
||||
"type": "string_medium",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "from_fucked_up_wordpress",
|
||||
"type": "boolean",
|
||||
"nullable": false
|
||||
}
|
||||
],
|
||||
"constraints": [
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "resources",
|
||||
"key_field": {
|
||||
"name": "id"
|
||||
},
|
||||
"data_fields": [
|
||||
{
|
||||
"name": "kind",
|
||||
"type": "string_short",
|
||||
"nullable": false,
|
||||
"description": "»local« | »ics_feed«"
|
||||
},
|
||||
{
|
||||
"name": "sub_id",
|
||||
"type": "integer",
|
||||
"nullable": false,
|
||||
"description": "local_resources.id | ics_feed_resources.id"
|
||||
}
|
||||
],
|
||||
"constraints": [
|
||||
{
|
||||
"kind": "unique",
|
||||
"parameters": {
|
||||
"fields": ["kind","sub_id"]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "calendars",
|
||||
"key_field": {
|
||||
"name": "id"
|
||||
},
|
||||
"data_fields": [
|
||||
{
|
||||
"name": "name",
|
||||
"type": "string_medium",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "access_public",
|
||||
"type": "boolean",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "access_level_default",
|
||||
"type": "integer",
|
||||
"nullable": false,
|
||||
"description": "0:none | 1:view | 2:edit | 3:admin"
|
||||
},
|
||||
{
|
||||
"name": "resource_id",
|
||||
"type": "integer",
|
||||
"nullable": false
|
||||
}
|
||||
],
|
||||
"constraints": [
|
||||
{
|
||||
"kind": "foreign_key",
|
||||
"parameters": {
|
||||
"fields": ["resource_id"],
|
||||
"reference": {
|
||||
"name": "resources",
|
||||
"fields": ["id"]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "calendar_access_attributed",
|
||||
"key_field": {
|
||||
"name": "id"
|
||||
},
|
||||
"data_fields": [
|
||||
{
|
||||
"name": "calendar_id",
|
||||
"type": "integer",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "user_id",
|
||||
"type": "integer",
|
||||
"nullable": false
|
||||
},
|
||||
{
|
||||
"name": "level",
|
||||
"type": "integer",
|
||||
"nullable": false,
|
||||
"description": "0:none | 1:view | 2:edit | 3:admin"
|
||||
}
|
||||
],
|
||||
"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"]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
2050
tools/sindri/sindri
2050
tools/sindri/sindri
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue