From 93fd134a92fb50cc6e8a9b5db3d6f25e84e6fa10 Mon Sep 17 00:00:00 2001 From: Marvin W Date: Thu, 9 Mar 2017 21:46:16 +0100 Subject: Fix bugs and warnings in qlite --- qlite/src/table.vala | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'qlite/src/table.vala') diff --git a/qlite/src/table.vala b/qlite/src/table.vala index 209a5a96..7396136e 100644 --- a/qlite/src/table.vala +++ b/qlite/src/table.vala @@ -6,14 +6,31 @@ public class Table { protected Database db; public string name { get; private set; } protected Column[] columns; + private string constraints; public Table(Database db, string name) { this.db = db; this.name = name; } - public void init(Column[] columns) { + public void init(Column[] columns, string? constraints = null) { this.columns = columns; + this.constraints = constraints; + } + + public void unique(Column[] columns, string? on_conflict = null) { + if (constraints == null) constraints = ""; else constraints += ", "; + constraints += "UNIQUE ("; + bool first = true; + foreach(Column c in columns) { + if (!first) constraints += ", "; + constraints += c.name; + first = false; + } + constraints += ")"; + if (on_conflict != null) { + constraints += "ON CONFLICT " + on_conflict; + } } private void ensure_init() throws DatabaseError { @@ -63,6 +80,9 @@ public class Table { sql += @"$(i > 0 ? "," : "") $c"; } } + if (constraints != null) { + sql += ", " + constraints; + } sql += ")"; db.exec(sql); } -- cgit v1.2.3-54-g00ecf