Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
canifa_note
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Vũ Hoàng Anh
canifa_note
Commits
87e62779
Commit
87e62779
authored
Jul 01, 2022
by
boojack
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: upsert migration history
parent
0945b14d
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
26 additions
and
50 deletions
+26
-50
db.go
store/db/db.go
+8
-11
migration_history.go
store/db/migration_history.go
+18
-39
No files found.
store/db/db.go
View file @
87e62779
...
...
@@ -142,26 +142,23 @@ func (db *DB) compareMigrationHistory() error {
return
err
}
if
table
==
nil
{
createTable
(
db
,
`
if
err
:=
createTable
(
db
,
`
CREATE TABLE migration_history (
version TEXT NOT NULL PRIMARY KEY,
created_ts BIGINT NOT NULL DEFAULT (strftime('%s', 'now'))
);
`
)
`
);
err
!=
nil
{
return
err
}
}
migrationHistoryList
,
err
:=
findMigrationHistoryList
(
db
)
currentVersion
:=
common
.
Version
migrationHistory
,
err
:=
upsertMigrationHistory
(
db
.
Db
,
currentVersion
)
if
err
!=
nil
{
return
err
}
if
len
(
migrationHistoryList
)
==
0
{
createMigrationHistory
(
db
,
common
.
Version
)
}
else
{
migrationHistory
:=
migrationHistoryList
[
0
]
if
migrationHistory
.
Version
!=
common
.
Version
{
createMigrationHistory
(
db
,
common
.
Version
)
}
if
migrationHistory
==
nil
{
return
fmt
.
Errorf
(
"failed to upsert migration history"
)
}
return
nil
...
...
store/db/migration_history.go
View file @
87e62779
package
db
import
(
"
fmt
"
"
database/sql
"
)
type
MigrationHistory
struct
{
...
...
@@ -9,53 +9,32 @@ type MigrationHistory struct {
Version
string
}
func
findMigrationHistoryList
(
db
*
DB
)
([]
*
MigrationHistory
,
error
)
{
rows
,
err
:=
db
.
Db
.
Query
(
`
SELECT
version,
created_ts
FROM
migration_history
ORDER BY created_ts DESC
`
)
if
err
!=
nil
{
return
nil
,
err
}
defer
rows
.
Close
()
migrationHistoryList
:=
make
([]
*
MigrationHistory
,
0
)
for
rows
.
Next
()
{
var
migrationHistory
MigrationHistory
if
err
:=
rows
.
Scan
(
&
migrationHistory
.
Version
,
&
migrationHistory
.
CreatedTs
,
);
err
!=
nil
{
return
nil
,
err
}
migrationHistoryList
=
append
(
migrationHistoryList
,
&
migrationHistory
)
}
return
migrationHistoryList
,
nil
}
func
createMigrationHistory
(
db
*
DB
,
version
string
)
error
{
result
,
err
:=
db
.
Db
.
Exec
(
`
func
upsertMigrationHistory
(
db
*
sql
.
DB
,
version
string
)
(
*
MigrationHistory
,
error
)
{
row
,
err
:=
db
.
Query
(
`
INSERT INTO migration_history (
version
)
VALUES (?)
ON CONFLICT(version) DO UPDATE
SET
version=EXCLUDED.version
RETURNING version, created_ts
`
,
version
,
)
if
err
!=
nil
{
return
err
return
nil
,
err
}
rows
,
_
:=
result
.
RowsAffected
()
if
rows
==
0
{
return
fmt
.
Errorf
(
"failed to create migration history with %s"
,
version
)
defer
row
.
Close
()
row
.
Next
()
migrationHistory
:=
MigrationHistory
{}
if
err
:=
row
.
Scan
(
&
migrationHistory
.
Version
,
&
migrationHistory
.
CreatedTs
,
);
err
!=
nil
{
return
nil
,
err
}
return
nil
return
&
migrationHistory
,
nil
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment