Skip to content

Commit

Permalink
interpolate: some fixes for recent API change.
Browse files Browse the repository at this point in the history
  • Loading branch information
mrjbq7 committed Apr 19, 2015
1 parent ce491a5 commit c5ed2c8
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 20 deletions.
26 changes: 7 additions & 19 deletions basis/db/sqlite/sqlite.factor
Original file line number Diff line number Diff line change
Expand Up @@ -199,19 +199,16 @@ M: sqlite-db-connection persistent-table ( -- assoc )
} ;

: insert-trigger ( -- string )
[
"""
CREATE TRIGGER fki_${table-name}_${table-id}_${foreign-table-name}_${foreign-table-id}_id
BEFORE INSERT ON ${table-name}
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"')
WHERE (SELECT ${foreign-table-id} FROM ${foreign-table-name} WHERE ${foreign-table-id} = NEW.${table-id}) IS NULL;
END;
""" interpolate
] with-string-writer ;
""" interpolate ;

: insert-trigger-not-null ( -- string )
[
"""
CREATE TRIGGER fki_${table-name}_${table-id}_${foreign-table-name}_${foreign-table-id}_id
BEFORE INSERT ON ${table-name}
Expand All @@ -220,23 +217,19 @@ M: sqlite-db-connection persistent-table ( -- assoc )
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;
END;
""" interpolate
] with-string-writer ;
""" interpolate ;

: update-trigger ( -- string )
[
"""
CREATE TRIGGER fku_${table-name}_${table-id}_${foreign-table-name}_${foreign-table-id}_id
BEFORE UPDATE ON ${table-name}
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"')
WHERE (SELECT ${foreign-table-id} FROM ${foreign-table-name} WHERE ${foreign-table-id} = NEW.${table-id}) IS NULL;
END;
""" interpolate
] with-string-writer ;
""" interpolate ;

: update-trigger-not-null ( -- string )
[
"""
CREATE TRIGGER fku_${table-name}_${table-id}_${foreign-table-name}_${foreign-table-id}_id
BEFORE UPDATE ON ${table-name}
Expand All @@ -245,31 +238,26 @@ M: sqlite-db-connection persistent-table ( -- assoc )
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;
END;
""" interpolate
] with-string-writer ;
""" interpolate ;

: delete-trigger-restrict ( -- string )
[
"""
CREATE TRIGGER fkd_${table-name}_${table-id}_${foreign-table-name}_${foreign-table-id}_id
BEFORE DELETE ON ${foreign-table-name}
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"')
WHERE (SELECT ${foreign-table-id} FROM ${foreign-table-name} WHERE ${foreign-table-id} = OLD.${foreign-table-id}) IS NOT NULL;
END;
""" interpolate
] with-string-writer ;
""" interpolate ;

: delete-trigger-cascade ( -- string )
[
"""
CREATE TRIGGER fkd_${table-name}_${table-id}_${foreign-table-name}_${foreign-table-id}_id
BEFORE DELETE ON ${foreign-table-name}
FOR EACH ROW BEGIN
DELETE from ${table-name} WHERE ${table-id} = OLD.${foreign-table-id};
END;
""" interpolate
] with-string-writer ;
""" interpolate ;

: can-be-null? ( -- ? )
"sql-spec" get modifiers>> [ +not-null+ = ] any? not ;
Expand All @@ -284,7 +272,7 @@ M: sqlite-db-connection persistent-table ( -- assoc )
can-be-null? [
insert-trigger sqlite-trigger,
update-trigger sqlite-trigger,
] [
] [
insert-trigger-not-null sqlite-trigger,
update-trigger-not-null sqlite-trigger,
] if
Expand Down
2 changes: 1 addition & 1 deletion basis/tools/scaffold/scaffold.factor
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,7 @@ ${example-indent} ""
${example-indent} ""
${example-indent}}
"""
interpolate
interpolate.
] with-variable
] with-variable ;

Expand Down

0 comments on commit c5ed2c8

Please sign in to comment.