Compare commits

..

1 commit

Author SHA1 Message Date
fenris f6e49ab470 [int] 2024-10-10 20:22:19 +02:00
10 changed files with 475 additions and 3026 deletions

View file

@ -2,11 +2,10 @@
## Beschreibung
- Datenmodell für [zeitbild](/zeitbild/meta)
- Datenmodell für Zeitbild
## Nutzung
- siehe `tools/build -h`
- Beispiel: `path=/tmp/zeitbild.sqlite && rm ${path} -f | tools/build -f sqlite | sqlite3 ${path}`

View file

@ -1,49 +0,0 @@
-- 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'
;

View file

@ -1,34 +0,0 @@
-- calendars
ALTER TABLE
"calendars"
ADD COLUMN
"hue" INTEGER NULL
;
UPDATE
"calendars"
SET
"hue" = (("id" * 40503) % 65535)
;
ALTER TABLE
"calendars"
ALTER COLUMN
"hue" SET NOT NULL
;
COMMENT ON COLUMN
"calendars"."hue"
IS
'scaled to a value between 0 and 65535'
;
-- _meta
UPDATE
"_meta"
SET
"revision" = 'r5'
;

View file

@ -1,48 +0,0 @@
-- groups
CREATE TABLE
groups(
"id" SERIAL,
"name" VARCHAR(63) NOT NULL,
"label" VARCHAR(255) NOT NULL,
UNIQUE ("name"),
UNIQUE ("id")
)
;
-- user_groups
CREATE TABLE
user_groups(
"id" SERIAL,
"user_id" INTEGER NOT NULL,
"group_id" INTEGER NOT NULL,
FOREIGN KEY ("user_id") REFERENCES "users"("id"),
FOREIGN KEY ("group_id") REFERENCES "groups"("id"),
UNIQUE ("user_id","group_id"),
UNIQUE ("id")
)
;
-- calendar_access_attributed_group
CREATE TABLE
calendar_access_attributed_group(
"id" SERIAL,
"calendar_id" INTEGER NOT NULL,
"group_id" INTEGER NOT NULL,
"level" INTEGER NOT NULL,
FOREIGN KEY ("calendar_id") REFERENCES "calendars"("id"),
FOREIGN KEY ("group_id") REFERENCES "groups"("id"),
UNIQUE ("calendar_id","group_id"),
UNIQUE ("id")
)
;
COMMENT ON COLUMN calendar_access_attributed_group.level IS '0:none | 1:view | 2:edit | 3:admin';
-- calendar_access_attributed_user
ALTER TABLE
calendar_access_attributed
RENAME TO
calendar_access_attributed_user
;
-- meta
UPDATE _meta SET revision = 'r6';

View file

@ -105,6 +105,11 @@
"type": "string_medium",
"nullable": false
},
{
"name": "public",
"type": "boolean",
"nullable": false
},
{
"name": "begin",
"type": "string_medium",
@ -198,11 +203,6 @@
"type": "string_medium",
"nullable": false
},
{
"name": "access_public",
"type": "boolean",
"nullable": false
},
{
"name": "access_level_default",
"type": "integer",

View file

@ -1,289 +0,0 @@
{
"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"]
}
}
]
}
]
}

View file

@ -1,294 +0,0 @@
{
"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"]
}
}
]
}
]
}

View file

@ -1,300 +0,0 @@
{
"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
},
{
"name": "hue",
"type": "integer",
"nullable": false,
"description": "scaled to a value between 0 and 65535"
}
],
"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"]
}
}
]
}
]
}

View file

@ -1,424 +0,0 @@
{
"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": "groups",
"key_field": {
"name": "id"
},
"data_fields": [
{
"name": "name",
"type": "string_short",
"nullable": false
},
{
"name": "label",
"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": "user_groups",
"key_field": {
"name": "id"
},
"data_fields": [
{
"name": "user_id",
"type": "integer",
"nullable": false
},
{
"name": "group_id",
"type": "integer",
"nullable": false
}
],
"constraints": [
{
"kind": "foreign_key",
"parameters": {
"fields": ["user_id"],
"reference": {
"name": "users",
"fields": ["id"]
}
}
},
{
"kind": "foreign_key",
"parameters": {
"fields": ["group_id"],
"reference": {
"name": "groups",
"fields": ["id"]
}
}
},
{
"kind": "unique",
"parameters": {
"fields": ["user_id", "group_id"]
}
}
]
},
{
"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
},
{
"name": "hue",
"type": "integer",
"nullable": false,
"description": "scaled to a value between 0 and 65535"
}
],
"constraints": [
{
"kind": "foreign_key",
"parameters": {
"fields": ["resource_id"],
"reference": {
"name": "resources",
"fields": ["id"]
}
}
}
]
},
{
"name": "calendar_access_attributed_group",
"key_field": {
"name": "id"
},
"data_fields": [
{
"name": "calendar_id",
"type": "integer",
"nullable": false
},
{
"name": "group_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": ["group_id"],
"reference": {
"name": "groups",
"fields": ["id"]
}
}
},
{
"kind": "unique",
"parameters": {
"fields": ["calendar_id","group_id"]
}
}
]
},
{
"name": "calendar_access_attributed_user",
"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"]
}
}
]
}
]
}

File diff suppressed because it is too large Load diff