From a34e67c887d35a609e814b2ee088a4788e8702ca Mon Sep 17 00:00:00 2001 From: Mitchell Fierro Date: Tue, 18 Apr 2017 17:29:24 -0700 Subject: [PATCH] add sqlite type for each column to _transicator_tables --- snapshotserver/snapshot.go | 2 +- snapshotserver/snapshot_api_test.go | 19 +++++++++++++++---- snapshotserver/sqlite.go | 10 ++++++---- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/snapshotserver/snapshot.go b/snapshotserver/snapshot.go index 6d3b9c2..9c7c444 100644 --- a/snapshotserver/snapshot.go +++ b/snapshotserver/snapshot.go @@ -466,7 +466,7 @@ func DownloadSnapshot( case sqliteDataType: err := WriteSqliteSnapshot(scopes, db, w, r) if err != nil { - log.Errorf("GetTenantSnapshotData error: %v", err) + log.Errorf("Sqlite snapshot error: %v", err) } return case protoType: diff --git a/snapshotserver/snapshot_api_test.go b/snapshotserver/snapshot_api_test.go index d7c6d1d..c5ca91a 100644 --- a/snapshotserver/snapshot_api_test.go +++ b/snapshotserver/snapshot_api_test.go @@ -205,23 +205,25 @@ var _ = Describe("Snapshot API Tests", func() { Expect(devID).Should(Equal("sqlSnap")) rows, err := sdb.Query(` - select columnName, primaryKey from _transicator_tables + select columnName, sqliteType, primaryKey from _transicator_tables where tableName = 'public_app' `) Expect(err).Should(Succeed()) defer rows.Close() r := make(map[string]int) + sqliteTypes := make(map[string]string) for rows.Next() { - var cn string + var cn, sqliteType string var pk bool - err = rows.Scan(&cn, &pk) + err = rows.Scan(&cn, &sqliteType, &pk) Expect(err).Should(Succeed()) if pk { r[cn] = 2 } else { r[cn] = 1 } + sqliteTypes[cn] = sqliteType } Expect(r["org"]).Should(Equal(1)) @@ -232,7 +234,16 @@ var _ = Describe("Snapshot API Tests", func() { Expect(r["created_by"]).Should(Equal(1)) Expect(r["id"]).Should(Equal(2)) Expect(r["_change_selector"]).Should(Equal(2)) - + + Expect(sqliteTypes["org"]).Should(Equal("text")) + Expect(sqliteTypes["dev_id"]).Should(Equal("text")) + Expect(sqliteTypes["display_name"]).Should(Equal("text")) + Expect(sqliteTypes["name"]).Should(Equal("text")) + Expect(sqliteTypes["created_at"]).Should(Equal("blob")) + Expect(sqliteTypes["created_by"]).Should(Equal("text")) + Expect(sqliteTypes["id"]).Should(Equal("text")) + Expect(sqliteTypes["_change_selector"]).Should(Equal("text")) + row = sdb.QueryRow( "select value from _transicator_metadata where key = 'snapshot'") var snap string diff --git a/snapshotserver/sqlite.go b/snapshotserver/sqlite.go index f02cab7..cc17371 100644 --- a/snapshotserver/sqlite.go +++ b/snapshotserver/sqlite.go @@ -129,7 +129,8 @@ func writeMetadata(pgTx *sql.Tx, tdb *sql.DB, tables map[string]*pgTable) error create table _transicator_tables (tableName varchar not null, columnName varchar not null, - typid integer, + typid integer not null, + sqliteType text not null, primaryKey bool) `) } @@ -149,8 +150,8 @@ func writeMetadata(pgTx *sql.Tx, tdb *sql.DB, tables map[string]*pgTable) error if err == nil { st, err = tdb.Prepare(` insert into _transicator_tables - (tableName, columnName, typid, primaryKey) - values (?, ?, ?, ?) + (tableName, columnName, typid, sqliteType, primaryKey) + values (?, ?, ?, ?, ?) `) defer st.Close() } @@ -158,7 +159,8 @@ func writeMetadata(pgTx *sql.Tx, tdb *sql.DB, tables map[string]*pgTable) error if err == nil { for _, table := range tables { for _, col := range table.columns { - _, err = st.Exec(table.schema+"_"+table.name, col.name, col.typid, col.primaryKey) + sqliteType := convertPgType(col.typid) + _, err = st.Exec(table.schema+"_"+table.name, col.name, col.typid, sqliteType, col.primaryKey) if err != nil { return err }