midori/data/bookmarks/Create.sql

92 lines
3.8 KiB
SQL

CREATE TABLE IF NOT EXISTS bookmarks
(
id INTEGER PRIMARY KEY AUTOINCREMENT,
parentid INTEGER DEFAULT NULL,
title TEXT,
uri TEXT,
desc TEXT,
app INTEGER,
toolbar INTEGER,
pos_panel INTEGER,
pos_bar INTEGER,
created DATE DEFAULT CURRENT_TIMESTAMP,
last_visit DATE,
visit_count INTEGER DEFAULT 0,
nick TEXT,
FOREIGN KEY(parentid) REFERENCES bookmarks(id) ON DELETE CASCADE
);
/* trigger: insert panel position */
CREATE TRIGGER IF NOT EXISTS bookmarkInsertPosPanel
AFTER INSERT ON bookmarks FOR EACH ROW
BEGIN UPDATE bookmarks SET pos_panel = (
SELECT ifnull(MAX(pos_panel),0)+1 FROM bookmarks WHERE
(NEW.parentid IS NOT NULL AND parentid = NEW.parentid)
OR (NEW.parentid IS NULL AND parentid IS NULL))
WHERE id = NEW.id; END;
/* trigger: insert Bookmarkbar position */
CREATE TRIGGER IF NOT EXISTS bookmarkInsertPosBar
AFTER INSERT ON bookmarks FOR EACH ROW WHEN NEW.toolbar=1
BEGIN UPDATE bookmarks SET pos_bar = (
SELECT ifnull(MAX(pos_bar),0)+1 FROM bookmarks WHERE
((NEW.parentid IS NOT NULL AND parentid = NEW.parentid)
OR (NEW.parentid IS NULL AND parentid IS NULL)) AND toolbar=1)
WHERE id = NEW.id; END;
/* trigger: update panel position */
CREATE TRIGGER IF NOT EXISTS bookmarkUpdatePosPanel
BEFORE UPDATE OF parentid ON bookmarks FOR EACH ROW
WHEN ((NEW.parentid IS NULL OR OLD.parentid IS NULL)
AND NEW.parentid IS NOT OLD.parentid) OR
((NEW.parentid IS NOT NULL AND OLD.parentid IS NOT NULL)
AND NEW.parentid!=OLD.parentid)
BEGIN UPDATE bookmarks SET pos_panel = pos_panel-1
WHERE ((OLD.parentid IS NOT NULL AND parentid = OLD.parentid)
OR (OLD.parentid IS NULL AND parentid IS NULL)) AND pos_panel > OLD.pos_panel;
UPDATE bookmarks SET pos_panel = (
SELECT ifnull(MAX(pos_panel),0)+1 FROM bookmarks
WHERE (NEW.parentid IS NOT NULL AND parentid = NEW.parentid)
OR (NEW.parentid IS NULL AND parentid IS NULL))
WHERE id = OLD.id; END;
/* trigger: update Bookmarkbar position */
CREATE TRIGGER IF NOT EXISTS bookmarkUpdatePosBar0
AFTER UPDATE OF parentid, toolbar ON bookmarks FOR EACH ROW
WHEN ((NEW.parentid IS NULL OR OLD.parentid IS NULL)
AND NEW.parentid IS NOT OLD.parentid)
OR ((NEW.parentid IS NOT NULL AND OLD.parentid IS NOT NULL)
AND NEW.parentid!=OLD.parentid) OR (OLD.toolbar=1 AND NEW.toolbar=0)
BEGIN UPDATE bookmarks SET pos_bar = NULL WHERE id = NEW.id;
UPDATE bookmarks SET pos_bar = pos_bar-1
WHERE ((OLD.parentid IS NOT NULL AND parentid = OLD.parentid)
OR (OLD.parentid IS NULL AND parentid IS NULL)) AND pos_bar > OLD.pos_bar; END;
/* trigger: update Bookmarkbar position */
CREATE TRIGGER IF NOT EXISTS bookmarkUpdatePosBar1
BEFORE UPDATE OF parentid, toolbar ON bookmarks FOR EACH ROW
WHEN ((NEW.parentid IS NULL OR OLD.parentid IS NULL)
AND NEW.parentid IS NOT OLD.parentid) OR
((NEW.parentid IS NOT NULL AND OLD.parentid IS NOT NULL)
AND NEW.parentid!=OLD.parentid) OR (OLD.toolbar=0 AND NEW.toolbar=1)
BEGIN UPDATE bookmarks SET pos_bar = (
SELECT ifnull(MAX(pos_bar),0)+1 FROM bookmarks WHERE
(NEW.parentid IS NOT NULL AND parentid = NEW.parentid)
OR (NEW.parentid IS NULL AND parentid IS NULL))
WHERE id = OLD.id; END;
/* trigger: delete panel position */
CREATE TRIGGER IF NOT EXISTS bookmarkDeletePosPanel
AFTER DELETE ON bookmarks FOR EACH ROW
BEGIN UPDATE bookmarks SET pos_panel = pos_panel-1
WHERE ((OLD.parentid IS NOT NULL AND parentid = OLD.parentid)
OR (OLD.parentid IS NULL AND parentid IS NULL)) AND pos_panel > OLD.pos_panel; END;
/* trigger: delete Bookmarkbar position */
CREATE TRIGGER IF NOT EXISTS bookmarkDeletePosBar
AFTER DELETE ON bookmarks FOR EACH ROW WHEN OLD.toolbar=1
BEGIN UPDATE bookmarks SET pos_bar = pos_bar-1
WHERE ((OLD.parentid IS NOT NULL AND parentid = OLD.parentid)
OR (OLD.parentid IS NULL AND parentid IS NULL)) AND pos_bar > OLD.pos_bar; END;