db.sqlite: fix text of generated triggers
An opening brace was missing for some variableschar-rename
parent
0e937e8464
commit
66083e263c
|
@ -1,9 +1,52 @@
|
||||||
USING: io io.files io.files.temp io.directories io.launcher
|
USING: accessors arrays db db.sqlite db.tuples db.types io.directories
|
||||||
kernel namespaces prettyprint tools.test db.sqlite db sequences
|
io.files.temp kernel layouts literals math.parser namespaces sequences
|
||||||
continuations db.types db.tuples unicode accessors arrays
|
sorting splitting tools.test ;
|
||||||
sorting layouts math.parser ;
|
|
||||||
IN: db.sqlite.tests
|
IN: db.sqlite.tests
|
||||||
|
|
||||||
|
: normalize ( str -- str' )
|
||||||
|
" \n" split harvest " " join ;
|
||||||
|
|
||||||
|
! delete-trigger-restrict
|
||||||
|
${
|
||||||
|
{
|
||||||
|
"CREATE TRIGGER fkd_TREE_NODE_NODE_ID_id "
|
||||||
|
"BEFORE DELETE ON NODE "
|
||||||
|
"FOR EACH ROW BEGIN "
|
||||||
|
"SELECT RAISE(ROLLBACK, "
|
||||||
|
"'delete on table \"NODE\" violates "
|
||||||
|
"foreign key constraint \"fkd_TREE_NODE_NODE_ID_id\"') "
|
||||||
|
"WHERE (SELECT ID FROM NODE WHERE ID = OLD.ID) IS NOT NULL; END;"
|
||||||
|
} concat
|
||||||
|
} [
|
||||||
|
{
|
||||||
|
{ "table-name" "TREE" }
|
||||||
|
{ "table-id" "NODE" }
|
||||||
|
{ "foreign-table-name" "NODE"}
|
||||||
|
{ "foreign-table-id" "ID" }
|
||||||
|
} [ delete-trigger-restrict ] with-variables
|
||||||
|
normalize
|
||||||
|
] unit-test
|
||||||
|
|
||||||
|
! insert-trigger
|
||||||
|
${
|
||||||
|
{
|
||||||
|
"CREATE TRIGGER fki_TREE_NODE_NODE_ID_id "
|
||||||
|
"BEFORE INSERT ON TREE "
|
||||||
|
"FOR EACH ROW BEGIN "
|
||||||
|
"SELECT RAISE(ROLLBACK, "
|
||||||
|
"'insert on table \"TREE\" violates "
|
||||||
|
"foreign key constraint \"fki_TREE_NODE_NODE_ID_id\"') "
|
||||||
|
"WHERE (SELECT ID FROM NODE WHERE ID = NEW.NODE) IS NULL; END;"
|
||||||
|
} concat
|
||||||
|
} [
|
||||||
|
{
|
||||||
|
{ "table-name" "TREE" }
|
||||||
|
{ "table-id" "NODE" }
|
||||||
|
{ "foreign-table-name" "NODE"}
|
||||||
|
{ "foreign-table-id" "ID" }
|
||||||
|
} [ insert-trigger ] with-variables normalize
|
||||||
|
] unit-test
|
||||||
|
|
||||||
: db-path ( -- path ) "test-" cell number>string ".db" 3append temp-file ;
|
: db-path ( -- path ) "test-" cell number>string ".db" 3append temp-file ;
|
||||||
: test.db ( -- sqlite-db ) db-path <sqlite-db> ;
|
: test.db ( -- sqlite-db ) db-path <sqlite-db> ;
|
||||||
|
|
||||||
|
|
|
@ -200,7 +200,7 @@ M: sqlite-db-connection persistent-table ( -- assoc )
|
||||||
CREATE TRIGGER fki_${table-name}_${table-id}_${foreign-table-name}_${foreign-table-id}_id
|
CREATE TRIGGER fki_${table-name}_${table-id}_${foreign-table-name}_${foreign-table-id}_id
|
||||||
BEFORE INSERT ON ${table-name}
|
BEFORE INSERT ON ${table-name}
|
||||||
FOR EACH ROW BEGIN
|
FOR EACH ROW BEGIN
|
||||||
SELECT RAISE(ROLLBACK, 'insert on table \"${table-name}\" violates foreign key constraint \"fki_${table-name}_$table-id}_${foreign-table-name}_${foreign-table-id}_id\"')
|
SELECT RAISE(ROLLBACK, 'insert on table \"${table-name}\" violates foreign key constraint \"fki_${table-name}_${table-id}_${foreign-table-name}_${foreign-table-id}_id\"')
|
||||||
WHERE (SELECT ${foreign-table-id} FROM ${foreign-table-name} WHERE ${foreign-table-id} = NEW.${table-id}) IS NULL;
|
WHERE (SELECT ${foreign-table-id} FROM ${foreign-table-name} WHERE ${foreign-table-id} = NEW.${table-id}) IS NULL;
|
||||||
END;
|
END;
|
||||||
" interpolate>string ;
|
" interpolate>string ;
|
||||||
|
@ -210,7 +210,7 @@ M: sqlite-db-connection persistent-table ( -- assoc )
|
||||||
CREATE TRIGGER fki_${table-name}_${table-id}_${foreign-table-name}_${foreign-table-id}_id
|
CREATE TRIGGER fki_${table-name}_${table-id}_${foreign-table-name}_${foreign-table-id}_id
|
||||||
BEFORE INSERT ON ${table-name}
|
BEFORE INSERT ON ${table-name}
|
||||||
FOR EACH ROW BEGIN
|
FOR EACH ROW BEGIN
|
||||||
SELECT RAISE(ROLLBACK, 'insert on table \"${table-name}\" violates foreign key constraint \"fki_${table-name}_$table-id}_${foreign-table-name}_${foreign-table-id}_id\"')
|
SELECT RAISE(ROLLBACK, 'insert on table \"${table-name}\" violates foreign key constraint \"fki_${table-name}_${table-id}_${foreign-table-name}_${foreign-table-id}_id\"')
|
||||||
WHERE NEW.${table-id} IS NOT NULL
|
WHERE NEW.${table-id} IS NOT NULL
|
||||||
AND (SELECT ${foreign-table-id} FROM ${foreign-table-name} WHERE ${foreign-table-id} = NEW.${table-id}) IS NULL;
|
AND (SELECT ${foreign-table-id} FROM ${foreign-table-name} WHERE ${foreign-table-id} = NEW.${table-id}) IS NULL;
|
||||||
END;
|
END;
|
||||||
|
@ -221,7 +221,7 @@ M: sqlite-db-connection persistent-table ( -- assoc )
|
||||||
CREATE TRIGGER fku_${table-name}_${table-id}_${foreign-table-name}_${foreign-table-id}_id
|
CREATE TRIGGER fku_${table-name}_${table-id}_${foreign-table-name}_${foreign-table-id}_id
|
||||||
BEFORE UPDATE ON ${table-name}
|
BEFORE UPDATE ON ${table-name}
|
||||||
FOR EACH ROW BEGIN
|
FOR EACH ROW BEGIN
|
||||||
SELECT RAISE(ROLLBACK, 'update on table \"${table-name}\" violates foreign key constraint \"fku_${table-name}_$table-id}_${foreign-table-name}_${foreign-table-id}_id\"')
|
SELECT RAISE(ROLLBACK, 'update on table \"${table-name}\" violates foreign key constraint \"fku_${table-name}_${table-id}_${foreign-table-name}_${foreign-table-id}_id\"')
|
||||||
WHERE (SELECT ${foreign-table-id} FROM ${foreign-table-name} WHERE ${foreign-table-id} = NEW.${table-id}) IS NULL;
|
WHERE (SELECT ${foreign-table-id} FROM ${foreign-table-name} WHERE ${foreign-table-id} = NEW.${table-id}) IS NULL;
|
||||||
END;
|
END;
|
||||||
" interpolate>string ;
|
" interpolate>string ;
|
||||||
|
@ -231,7 +231,7 @@ M: sqlite-db-connection persistent-table ( -- assoc )
|
||||||
CREATE TRIGGER fku_${table-name}_${table-id}_${foreign-table-name}_${foreign-table-id}_id
|
CREATE TRIGGER fku_${table-name}_${table-id}_${foreign-table-name}_${foreign-table-id}_id
|
||||||
BEFORE UPDATE ON ${table-name}
|
BEFORE UPDATE ON ${table-name}
|
||||||
FOR EACH ROW BEGIN
|
FOR EACH ROW BEGIN
|
||||||
SELECT RAISE(ROLLBACK, 'update on table \"${table-name}\" violates foreign key constraint \"fku_${table-name}_$table-id}_${foreign-table-name}_${foreign-table-id}_id\"')
|
SELECT RAISE(ROLLBACK, 'update on table \"${table-name}\" violates foreign key constraint \"fku_${table-name}_${table-id}_${foreign-table-name}_${foreign-table-id}_id\"')
|
||||||
WHERE NEW.${table-id} IS NOT NULL
|
WHERE NEW.${table-id} IS NOT NULL
|
||||||
AND (SELECT ${foreign-table-id} FROM ${foreign-table-name} WHERE ${foreign-table-id} = NEW.${table-id}) IS NULL;
|
AND (SELECT ${foreign-table-id} FROM ${foreign-table-name} WHERE ${foreign-table-id} = NEW.${table-id}) IS NULL;
|
||||||
END;
|
END;
|
||||||
|
@ -242,7 +242,7 @@ M: sqlite-db-connection persistent-table ( -- assoc )
|
||||||
CREATE TRIGGER fkd_${table-name}_${table-id}_${foreign-table-name}_${foreign-table-id}_id
|
CREATE TRIGGER fkd_${table-name}_${table-id}_${foreign-table-name}_${foreign-table-id}_id
|
||||||
BEFORE DELETE ON ${foreign-table-name}
|
BEFORE DELETE ON ${foreign-table-name}
|
||||||
FOR EACH ROW BEGIN
|
FOR EACH ROW BEGIN
|
||||||
SELECT RAISE(ROLLBACK, 'delete on table \"${foreign-table-name}\" violates foreign key constraint \"fkd_${table-name}_$table-id}_${foreign-table-name}_${foreign-table-id}_id\"')
|
SELECT RAISE(ROLLBACK, 'delete on table \"${foreign-table-name}\" violates foreign key constraint \"fkd_${table-name}_${table-id}_${foreign-table-name}_${foreign-table-id}_id\"')
|
||||||
WHERE (SELECT ${foreign-table-id} FROM ${foreign-table-name} WHERE ${foreign-table-id} = OLD.${foreign-table-id}) IS NOT NULL;
|
WHERE (SELECT ${foreign-table-id} FROM ${foreign-table-name} WHERE ${foreign-table-id} = OLD.${foreign-table-id}) IS NOT NULL;
|
||||||
END;
|
END;
|
||||||
" interpolate>string ;
|
" interpolate>string ;
|
||||||
|
|
Loading…
Reference in New Issue