Skip to content
This repository was archived by the owner on Aug 3, 2022. It is now read-only.

add sqlite type for each column to _transicator_tables #70

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion snapshotserver/snapshot.go
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
19 changes: 15 additions & 4 deletions snapshotserver/snapshot_api_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand All @@ -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))


Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about other data types, other than text and blob?

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
Expand Down
10 changes: 6 additions & 4 deletions snapshotserver/sqlite.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
`)
}
Expand All @@ -149,16 +150,17 @@ 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()
}

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
}
Expand Down