Publier Globinours 1.0.0-rc.3
This commit is contained in:
parent
ea8c24d622
commit
9a2b4068da
325 changed files with 38230 additions and 20 deletions
41
migrations/080_agenda.sql
Normal file
41
migrations/080_agenda.sql
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
ALTER TABLE role_permissions RENAME TO role_permissions_legacy;
|
||||
CREATE TABLE role_permissions (
|
||||
role TEXT NOT NULL CHECK(role IN ('admin','responsable','benevole','lecture')),
|
||||
module TEXT NOT NULL CHECK(module IN ('dashboard','animals','medical','care','directory','agenda','statistics','administrative','grants')),
|
||||
can_view INTEGER NOT NULL DEFAULT 0 CHECK(can_view IN (0,1)),
|
||||
can_edit INTEGER NOT NULL DEFAULT 0 CHECK(can_edit IN (0,1)),
|
||||
updated_by INTEGER REFERENCES users(id) ON DELETE SET NULL,
|
||||
updated_at TEXT NOT NULL DEFAULT(datetime('now')),
|
||||
PRIMARY KEY(role,module)
|
||||
);
|
||||
INSERT INTO role_permissions SELECT * FROM role_permissions_legacy;
|
||||
DROP TABLE role_permissions_legacy;
|
||||
INSERT INTO role_permissions(role,module,can_view,can_edit) VALUES
|
||||
('admin','agenda',1,1),('responsable','agenda',1,1),('benevole','agenda',1,1),('lecture','agenda',1,0);
|
||||
|
||||
CREATE TABLE agenda_items (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
item_type TEXT NOT NULL CHECK(item_type IN ('appointment','veterinary','transport','pre_adoption','task','other')),
|
||||
title TEXT NOT NULL,
|
||||
description TEXT,
|
||||
starts_at TEXT NOT NULL,
|
||||
ends_at TEXT,
|
||||
all_day INTEGER NOT NULL DEFAULT 0 CHECK(all_day IN (0,1)),
|
||||
location TEXT,
|
||||
status TEXT NOT NULL DEFAULT 'planned' CHECK(status IN ('planned','completed','cancelled')),
|
||||
priority TEXT NOT NULL DEFAULT 'normal' CHECK(priority IN ('low','normal','high','urgent')),
|
||||
assigned_user_id INTEGER REFERENCES users(id) ON DELETE SET NULL,
|
||||
animal_id INTEGER REFERENCES animals(id) ON DELETE SET NULL,
|
||||
contact_id INTEGER REFERENCES directory_contacts(id) ON DELETE SET NULL,
|
||||
reminder_minutes INTEGER CHECK(reminder_minutes IS NULL OR reminder_minutes >= 0),
|
||||
repeat_rule TEXT NOT NULL DEFAULT 'none' CHECK(repeat_rule IN ('none','daily','weekly','monthly')),
|
||||
repeat_until TEXT,
|
||||
completed_at TEXT,
|
||||
completed_by INTEGER REFERENCES users(id) ON DELETE SET NULL,
|
||||
created_by INTEGER REFERENCES users(id) ON DELETE SET NULL,
|
||||
created_at TEXT NOT NULL DEFAULT(datetime('now')),
|
||||
updated_at TEXT NOT NULL DEFAULT(datetime('now'))
|
||||
);
|
||||
CREATE INDEX idx_agenda_starts ON agenda_items(starts_at,status);
|
||||
CREATE INDEX idx_agenda_assignee ON agenda_items(assigned_user_id,status,starts_at);
|
||||
CREATE INDEX idx_agenda_animal ON agenda_items(animal_id,starts_at);
|
||||
Loading…
Add table
Add a link
Reference in a new issue