Globinours/migrations/063_separate_dewormer_catalog.sql

18 lines
2.8 KiB
SQL

CREATE TABLE ref_dewormers (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL COLLATE NOCASE UNIQUE,active_ingredient TEXT,form TEXT,notes TEXT,active INTEGER NOT NULL DEFAULT 1 CHECK(active IN (0,1)),created_at TEXT NOT NULL DEFAULT(datetime('now')));
INSERT INTO ref_dewormers(name,active_ingredient,form,notes) VALUES
('NexGard Combo',NULL,'Pipette','Couvre principalement : puces, tiques, acariens, vers ronds, ténias et certains vers pulmonaires.'),
('Broadline',NULL,'Pipette','Couvre principalement : puces, tiques, vers ronds et ténias.'),
('Milbemax Chat / Chaton',NULL,'Comprimé','Couvre principalement : vers ronds et ténias.'),
('Milprazon Chat / Chaton',NULL,'Comprimé','Équivalent générique du Milbemax ; couvre principalement les vers ronds et ténias.'),
('Drontal Chat',NULL,'Comprimé','Couvre principalement : vers ronds et ténias.'),
('Profender',NULL,'Pipette','Couvre principalement les vers ronds et ténias, sans action contre les puces ou les tiques.'),
('Panacur','Fenbendazole','Pâte / comprimé','Couvre principalement les vers ronds ; utilisé dans certains protocoles contre Giardia.'),
('Stronghold Plus',NULL,'Pipette','Couvre principalement les puces, tiques, gale ou acariens et certains vers ronds, mais pas les ténias.'),
('Advocate',NULL,'Pipette','Couvre principalement les puces, acariens et certains vers ronds, mais pas les ténias.');
INSERT OR IGNORE INTO ref_dewormers(name,active_ingredient,form) SELECT DISTINCT m.name,m.molecule,m.form FROM dewormings d JOIN ref_medications m ON m.id=d.medication_id;
ALTER TABLE dewormings RENAME TO dewormings_with_medications;
CREATE TABLE dewormings (id INTEGER PRIMARY KEY AUTOINCREMENT,animal_id INTEGER NOT NULL,dewormer_id INTEGER,administered_on TEXT NOT NULL,dose_text TEXT,weight_kg REAL,next_due_date TEXT,notes TEXT,source_litter_id INTEGER,created_by INTEGER,created_at TEXT NOT NULL DEFAULT(datetime('now')),updated_at TEXT NOT NULL DEFAULT(datetime('now')),FOREIGN KEY(animal_id) REFERENCES animals(id) ON DELETE CASCADE,FOREIGN KEY(dewormer_id) REFERENCES ref_dewormers(id) ON DELETE SET NULL,FOREIGN KEY(source_litter_id) REFERENCES litters(id) ON DELETE SET NULL,FOREIGN KEY(created_by) REFERENCES users(id) ON DELETE SET NULL);
INSERT INTO dewormings(id,animal_id,dewormer_id,administered_on,dose_text,weight_kg,next_due_date,notes,source_litter_id,created_by,created_at,updated_at) SELECT d.id,d.animal_id,r.id,d.administered_on,d.dose_text,d.weight_kg,d.next_due_date,d.notes,d.source_litter_id,d.created_by,d.created_at,d.updated_at FROM dewormings_with_medications d LEFT JOIN ref_medications m ON m.id=d.medication_id LEFT JOIN ref_dewormers r ON r.name=m.name COLLATE NOCASE;
DROP TABLE dewormings_with_medications;
CREATE INDEX idx_dewormings_animal_date ON dewormings(animal_id,administered_on DESC);
CREATE INDEX idx_dewormings_next_due ON dewormings(next_due_date);