diff options
author | George Goldberg <george@gberg.me> | 2018-04-27 10:53:38 +0100 |
---|---|---|
committer | George Goldberg <george@gberg.me> | 2018-04-27 10:53:38 +0100 |
commit | 2386acb3ddabd8827e21b1862c338a8b13a25de6 (patch) | |
tree | d9c5800bf168db532124db3c213c2607402894c6 /store/sqlstore | |
parent | 7294644e9d74ca1512a730c597d61a97ccbcf10c (diff) | |
parent | 7abd6176e99d3f82711af51f8d75b3142ab73758 (diff) | |
download | chat-2386acb3ddabd8827e21b1862c338a8b13a25de6.tar.gz chat-2386acb3ddabd8827e21b1862c338a8b13a25de6.tar.bz2 chat-2386acb3ddabd8827e21b1862c338a8b13a25de6.zip |
Merge branch 'master' into advanced-permissions-phase-2
Diffstat (limited to 'store/sqlstore')
-rw-r--r-- | store/sqlstore/supplier.go | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/store/sqlstore/supplier.go b/store/sqlstore/supplier.go index db24ba980..0e7823edd 100644 --- a/store/sqlstore/supplier.go +++ b/store/sqlstore/supplier.go @@ -61,6 +61,8 @@ const ( EXIT_REMOVE_TABLE = 134 EXIT_CREATE_INDEX_SQLITE = 135 EXIT_REMOVE_INDEX_SQLITE = 136 + EXIT_TABLE_EXISTS_SQLITE = 137 + EXIT_DOES_COLUMN_EXISTS_SQLITE = 138 ) type SqlSupplierOldStores struct { @@ -367,6 +369,20 @@ func (ss *SqlSupplier) DoesTableExist(tableName string) bool { return count > 0 + } else if ss.DriverName() == model.DATABASE_DRIVER_SQLITE { + count, err := ss.GetMaster().SelectInt( + `SELECT name FROM sqlite_master WHERE type='table' AND name=?`, + tableName, + ) + + if err != nil { + l4g.Critical(utils.T("store.sql.table_exists.critical"), err) + time.Sleep(time.Second) + os.Exit(EXIT_TABLE_EXISTS_SQLITE) + } + + return count > 0 + } else { l4g.Critical(utils.T("store.sql.column_exists_missing_driver.critical")) time.Sleep(time.Second) @@ -422,6 +438,21 @@ func (ss *SqlSupplier) DoesColumnExist(tableName string, columnName string) bool return count > 0 + } else if ss.DriverName() == model.DATABASE_DRIVER_SQLITE { + count, err := ss.GetMaster().SelectInt( + `SELECT COUNT(*) FROM pragma_table_info(?) WHERE name=?`, + tableName, + columnName, + ) + + if err != nil { + l4g.Critical(utils.T("store.sql.column_exists.critical"), err) + time.Sleep(time.Second) + os.Exit(EXIT_DOES_COLUMN_EXISTS_SQLITE) + } + + return count > 0 + } else { l4g.Critical(utils.T("store.sql.column_exists_missing_driver.critical")) time.Sleep(time.Second) |