From 9728e832b18e8bbfcc0e011b5b1da9afe6021bf3 Mon Sep 17 00:00:00 2001 From: Marvin W Date: Sun, 23 Apr 2017 10:23:11 +0200 Subject: qlite/libdino: optimize db access --- qlite/src/table.vala | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'qlite/src/table.vala') diff --git a/qlite/src/table.vala b/qlite/src/table.vala index b4f2fee7..bd3fcc36 100644 --- a/qlite/src/table.vala +++ b/qlite/src/table.vala @@ -7,6 +7,7 @@ public class Table { public string name { get; private set; } protected Column[]? columns; private string constraints = ""; + private string[] post_statements = {}; public Table(Database db, string name) { this.db = db; @@ -32,6 +33,22 @@ public class Table { } } + public void add_post_statement(string stmt) { + post_statements += stmt; + } + + public void index(string index_name, Column[] columns, bool unique = false) { + string stmt = @"CREATE $(unique ? "UNIQUE" : "") INDEX IF NOT EXISTS $index_name ON $name ("; + bool first = true; + foreach (Column c in columns) { + if (!first) stmt += ", "; + stmt += c.name; + first = false; + } + stmt += ")"; + add_post_statement(stmt); + } + private void ensure_init() throws DatabaseError { if (columns == null) throw new DatabaseError.NOT_INITIALIZED(@"Table $name was not initialized, call init()"); } @@ -114,6 +131,12 @@ public class Table { db.exec(@"DROP TABLE _$(name)_$old_version"); } } + + internal void post() throws DatabaseError { + foreach (string stmt in post_statements) { + db.exec(stmt); + } + } } } \ No newline at end of file -- cgit v1.2.3-54-g00ecf