Compare commits

..

17 commits

Author SHA1 Message Date
Christian Fraß 315e26f499 [int] 2025-08-25 12:08:26 +00:00
Christian Fraß b1c0ae6b51 [add] migration: r6->r7 2025-08-25 13:51:43 +02:00
Christian Fraß d63238ad77 [int] 2025-08-22 10:53:10 +02:00
Christian Fraß c25ba7fcd1 [int] 2025-08-22 06:35:16 +00:00
Christian Fraß e194b034fc [task-193] [int] 2025-07-07 12:10:34 +02:00
Christian Fraß 9a892ddee0 [task-193] [int] 2025-04-12 10:21:25 +00:00
Christian Fraß 1aa1fb78ac [task-193] [mod] r7 2025-04-01 04:21:11 +00:00
Christian Fraß 7bb4f1188f [task-193] [del] r6-2 2025-03-31 19:42:07 +00:00
Christian Fraß fa75ad2b14 [task-193] [mod] r7 2025-03-31 19:41:13 +00:00
Christian Fraß 28bb60cedd [res] 2025-03-31 19:22:54 +00:00
Christian Fraß 01a8ce21ba [task-207] merge 2025-03-31 19:12:27 +00:00
Christian Fraß 735d26e321 [task-207] Anordnung geändert 2025-03-31 18:46:04 +00:00
Christian Fraß 21de395b24 [task-207] 2025-03-31 18:40:17 +00:00
Christian Fraß ee5b297016 [task-193] [int] 2025-03-31 17:27:00 +00:00
Christian Fraß 0ed14ea23e [mod] r5 2025-01-18 09:49:38 +01:00
Christian Fraß e2e2481c63 [upd] sindri 2025-01-18 09:49:29 +01:00
Christian Fraß 76807fe3f0 [add] r5 2025-01-17 09:46:58 +01:00
5 changed files with 2352 additions and 469 deletions

View file

@ -0,0 +1,100 @@
-- groups
CREATE TABLE
groups(
"id" SERIAL,
"name" VARCHAR(63) NOT NULL,
"label" VARCHAR(63) NOT NULL,
UNIQUE ("name"),
UNIQUE ("id")
)
;
INSERT INTO
groups("name","label")
SELECT
DISTINCT group_name,
''
FROM
member_groups
;
UPDATE
groups
SET
label = name
;
-- invitations
CREATE TABLE
invitations(
"id" SERIAL,
"key" VARCHAR(63) NOT NULL,
"expiry" INTEGER,
"name_changeable" BOOLEAN NOT NULL,
"name_value" VARCHAR(63) NOT NULL,
"label_changeable" BOOLEAN NOT NULL,
"label_value" VARCHAR(63) NOT NULL,
"email_address_changeable" BOOLEAN NOT NULL,
"email_address_value" VARCHAR(63),
"groups_changeable" BOOLEAN NOT NULL,
UNIQUE ("key"),
UNIQUE ("id")
)
;
-- invitation_groups
CREATE TABLE
invitation_groups(
"invitation_id" INTEGER NOT NULL,
"group_id" INTEGER NOT NULL,
"_dummy" BOOLEAN,
FOREIGN KEY ("invitation_id") REFERENCES "invitations"("id"),
FOREIGN KEY ("group_id") REFERENCES "groups"("id"),
UNIQUE ("invitation_id","group_id")
)
;
-- name_indices
DROP TABLE name_indices;
-- members
ALTER TABLE members DROP CONSTRAINT members_name_real_value_name_real_index_key;
ALTER TABLE members ADD COLUMN "label" VARCHAR(63);
UPDATE members SET label = name_real_value;
ALTER TABLE members ALTER COLUMN "label" SET NOT NULL;
ALTER TABLE members RENAME COLUMN "name_real_value" TO "name";
ALTER TABLE members RENAME COLUMN "email_address_private" TO "email_address";
ALTER TABLE members DROP COLUMN "membership_number";
ALTER TABLE members DROP COLUMN "name_real_index";
ALTER TABLE members DROP COLUMN "registered";
ALTER TABLE members DROP COLUMN "email_use_veiled_address";
ALTER TABLE members DROP COLUMN "email_use_nominal_address";
ALTER TABLE members DROP COLUMN "email_redirect_to_private_address";
ALTER TABLE members DROP COLUMN "email_allow_sending";
ALTER TABLE members ADD CONSTRAINT "members_name_key" UNIQUE ("name");
-- member_groups
ALTER TABLE member_groups DROP CONSTRAINT member_groups_member_id_group_name_key;
ALTER TABLE member_groups ADD COLUMN group_id INTEGER;
UPDATE member_groups AS x SET group_id = (SELECT y.id FROM groups AS y WHERE y.name = x.group_name);
ALTER TABLE member_groups ALTER COLUMN group_id SET NOT NULL;
ALTER TABLE member_groups ADD CONSTRAINT "member_groups_group_id_fkey" FOREIGN KEY ("group_id") REFERENCES groups(id);
ALTER TABLE member_groups ADD CONSTRAINT "member_groups_member_id_group_id_key" UNIQUE ("member_id","group_id");
ALTER TABLE member_groups DROP COLUMN group_name;
-- revision
UPDATE _meta SET revision = 'r7';

View file

@ -0,0 +1,169 @@
{
"domains": [
{
"name": "sessions",
"data_fields": [
{
"name": "key",
"type": "string_medium",
"nullable": false
},
{
"name": "data",
"type": "string_long",
"nullable": false
}
],
"constraints": [
{
"kind": "unique",
"parameters": {
"fields": ["key"]
}
}
]
},
{
"name": "name_indices",
"data_fields": [
{
"name": "name_image",
"type": "string_medium",
"nullable": false
},
{
"name": "index",
"type": "integer",
"nullable": false
}
],
"constraints": [
{
"kind": "unique",
"parameters": {
"fields": ["name_image"]
}
}
]
},
{
"name": "members",
"key_field": {
"name": "id"
},
"data_fields": [
{
"name": "membership_number",
"type": "string_short",
"nullable": true
},
{
"name": "name_real_value",
"type": "string_short",
"nullable": false
},
{
"name": "name_real_index",
"type": "integer",
"nullable": false
},
{
"name": "email_address_private",
"type": "string_short",
"nullable": true
},
{
"name": "registered",
"type": "boolean",
"nullable": false
},
{
"name": "enabled",
"type": "boolean",
"nullable": false
},
{
"name": "email_use_veiled_address",
"type": "boolean",
"nullable": false
},
{
"name": "email_use_nominal_address",
"type": "boolean",
"nullable": false
},
{
"name": "email_redirect_to_private_address",
"type": "boolean",
"nullable": false
},
{
"name": "email_allow_sending",
"type": "boolean",
"nullable": false
},
{
"name": "password_image",
"type": "string_medium",
"nullable": true
},
{
"name": "password_change_last_attempt",
"type": "integer",
"nullable": true
},
{
"name": "password_change_token",
"type": "string_medium",
"nullable": true
}
],
"constraints": [
{
"kind": "unique",
"parameters": {
"fields": ["name_real_value","name_real_index"]
}
}
]
},
{
"name": "member_groups",
"data_fields": [
{
"name": "member_id",
"type": "integer",
"nullable": false
},
{
"name": "group_name",
"type": "string_medium",
"nullable": false
},
{
"name": "_dummy",
"type": "boolean",
"nullable": true
}
],
"constraints": [
{
"kind": "foreign_key",
"parameters": {
"fields": ["member_id"],
"reference": {
"name": "members",
"fields": ["id"]
}
}
},
{
"kind": "unique",
"parameters": {
"fields": ["member_id","group_name"]
}
}
]
}
]
}

View file

@ -0,0 +1,205 @@
{
"domains": [
{
"name": "sessions",
"data_fields": [
{
"name": "key",
"type": "string_medium",
"nullable": false
},
{
"name": "data",
"type": "string_long",
"nullable": false
}
],
"constraints": [
{
"kind": "unique",
"parameters": {
"fields": ["key"]
}
}
]
},
{
"name": "admins",
"key_field": {
"name": "id"
},
"data_fields": [
{
"name": "name",
"type": "string_short",
"nullable": false
},
{
"name": "email_address",
"type": "string_medium",
"nullable": true
},
{
"name": "password_image",
"type": "string_medium",
"nullable": false
},
{
"name": "password_fail_count",
"type": "integer",
"nullable": false
}
],
"constraints": [
{
"kind": "unique",
"parameters": {
"fields": ["name"]
}
}
]
},
{
"name": "name_indices",
"data_fields": [
{
"name": "name_image",
"type": "string_medium",
"nullable": false
},
{
"name": "index",
"type": "integer",
"nullable": false
}
],
"constraints": [
{
"kind": "unique",
"parameters": {
"fields": ["name_image"]
}
}
]
},
{
"name": "members",
"key_field": {
"name": "id"
},
"data_fields": [
{
"name": "membership_number",
"type": "string_short",
"nullable": true
},
{
"name": "name_real_value",
"type": "string_short",
"nullable": false
},
{
"name": "name_real_index",
"type": "integer",
"nullable": false
},
{
"name": "email_address_private",
"type": "string_short",
"nullable": true
},
{
"name": "registered",
"type": "boolean",
"nullable": false
},
{
"name": "enabled",
"type": "boolean",
"nullable": false
},
{
"name": "email_use_veiled_address",
"type": "boolean",
"nullable": false
},
{
"name": "email_use_nominal_address",
"type": "boolean",
"nullable": false
},
{
"name": "email_redirect_to_private_address",
"type": "boolean",
"nullable": false
},
{
"name": "email_allow_sending",
"type": "boolean",
"nullable": false
},
{
"name": "password_image",
"type": "string_medium",
"nullable": true
},
{
"name": "password_change_last_attempt",
"type": "integer",
"nullable": true
},
{
"name": "password_change_token",
"type": "string_medium",
"nullable": true
}
],
"constraints": [
{
"kind": "unique",
"parameters": {
"fields": ["name_real_value","name_real_index"]
}
}
]
},
{
"name": "member_groups",
"data_fields": [
{
"name": "member_id",
"type": "integer",
"nullable": false
},
{
"name": "group_name",
"type": "string_medium",
"nullable": false
},
{
"name": "_dummy",
"type": "boolean",
"nullable": true
}
],
"constraints": [
{
"kind": "foreign_key",
"parameters": {
"fields": ["member_id"],
"reference": {
"name": "members",
"fields": ["id"]
}
}
},
{
"kind": "unique",
"parameters": {
"fields": ["member_id","group_name"]
}
}
]
}
]
}

View file

@ -0,0 +1,297 @@
{
"domains": [
{
"name": "sessions",
"data_fields": [
{
"name": "key",
"type": "string_medium",
"nullable": false
},
{
"name": "data",
"type": "string_long",
"nullable": false
}
],
"constraints": [
{
"kind": "unique",
"parameters": {
"fields": ["key"]
}
}
]
},
{
"name": "groups",
"key_field": {
"name": "id"
},
"data_fields": [
{
"name": "name",
"type": "string_short",
"nullable": false
},
{
"name": "label",
"type": "string_short",
"nullable": false
}
],
"constraints": [
{
"kind": "unique",
"parameters": {
"fields": ["name"]
}
}
]
},
{
"name": "admins",
"key_field": {
"name": "id"
},
"data_fields": [
{
"name": "name",
"type": "string_short",
"nullable": false
},
{
"name": "email_address",
"type": "string_medium",
"nullable": true
},
{
"name": "password_image",
"type": "string_medium",
"nullable": false
},
{
"name": "password_fail_count",
"type": "integer",
"nullable": false
}
],
"constraints": [
{
"kind": "unique",
"parameters": {
"fields": ["name"]
}
}
]
},
{
"name": "members",
"key_field": {
"name": "id"
},
"data_fields": [
{
"name": "name",
"type": "string_short",
"nullable": false
},
{
"name": "label",
"type": "string_short",
"nullable": false
},
{
"name": "email_address",
"type": "string_short",
"nullable": true
},
{
"name": "enabled",
"type": "boolean",
"nullable": false
},
{
"name": "password_image",
"type": "string_medium",
"nullable": true
},
{
"name": "password_change_last_attempt",
"type": "integer",
"nullable": true
},
{
"name": "password_change_token",
"type": "string_medium",
"nullable": true
}
],
"constraints": [
{
"kind": "unique",
"parameters": {
"fields": ["name"]
}
}
]
},
{
"name": "member_groups",
"data_fields": [
{
"name": "member_id",
"type": "integer",
"nullable": false
},
{
"name": "group_id",
"type": "integer",
"nullable": false
},
{
"name": "_dummy",
"type": "boolean",
"nullable": true
}
],
"constraints": [
{
"kind": "foreign_key",
"parameters": {
"fields": ["member_id"],
"reference": {
"name": "members",
"fields": ["id"]
}
}
},
{
"kind": "foreign_key",
"parameters": {
"fields": ["group_id"],
"reference": {
"name": "groups",
"fields": ["id"]
}
}
},
{
"kind": "unique",
"parameters": {
"fields": ["member_id","group_id"]
}
}
]
},
{
"name": "invitations",
"key_field": {
"name": "id"
},
"data_fields": [
{
"name": "key",
"type": "string_short",
"nullable": false
},
{
"name": "expiry",
"type": "integer",
"nullable": true
},
{
"name": "name_changeable",
"type": "boolean",
"nullable": false
},
{
"name": "name_value",
"type": "string_short",
"nullable": false
},
{
"name": "label_changeable",
"type": "boolean",
"nullable": false
},
{
"name": "label_value",
"type": "string_short",
"nullable": false
},
{
"name": "email_address_changeable",
"type": "boolean",
"nullable": false
},
{
"name": "email_address_value",
"type": "string_short",
"nullable": true
},
{
"name": "groups_changeable",
"type": "boolean",
"nullable": false
}
],
"constraints": [
{
"kind": "unique",
"parameters": {
"fields": ["key"]
}
}
]
},
{
"name": "invitation_groups",
"data_fields": [
{
"name": "invitation_id",
"type": "integer",
"nullable": false
},
{
"name": "group_id",
"type": "integer",
"nullable": false
},
{
"name": "_dummy",
"type": "boolean",
"nullable": true
}
],
"constraints": [
{
"kind": "foreign_key",
"parameters": {
"fields": ["invitation_id"],
"reference": {
"name": "invitations",
"fields": ["id"]
}
}
},
{
"kind": "foreign_key",
"parameters": {
"fields": ["group_id"],
"reference": {
"name": "groups",
"fields": ["id"]
}
}
},
{
"kind": "unique",
"parameters": {
"fields": ["invitation_id","group_id"]
}
}
]
}
]
}

File diff suppressed because it is too large Load diff