Gruppen-Steuerung #2

Merged
fenris merged 1 commit from task-416 into main 2025-10-23 19:16:03 +02:00
2 changed files with 472 additions and 0 deletions
Showing only changes of commit b84e2dd732 - Show all commits

View file

@ -0,0 +1,48 @@
-- 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

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