Publier Globinours 1.0.0-rc.3

This commit is contained in:
Alexandre NOEL 2026-09-03 12:39:15 +02:00
commit 9a2b4068da
325 changed files with 38230 additions and 20 deletions

41
migrations/080_agenda.sql Normal file
View 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);