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
de705853
Commit
de705853
authored
Jul 09, 2022
by
boojack
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: schema migration for minor version
parent
7c94db0c
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
22 additions
and
49 deletions
+22
-49
root.go
bin/server/cmd/root.go
+3
-6
db.go
store/db/db.go
+10
-27
00__user_role.sql
store/db/migration/0.2/00__user_role.sql
+0
-2
migration_history.go
store/db/migration_history.go
+8
-14
table.go
store/db/table.go
+1
-0
No files found.
bin/server/cmd/root.go
View file @
de705853
...
...
@@ -36,11 +36,10 @@ func (m *Main) Run() error {
storeInstance
:=
store
.
New
(
db
.
Db
,
m
.
profile
)
s
.
Store
=
storeInstance
if
err
:=
s
.
Run
();
err
!=
nil
{
return
err
}
println
(
greetingBanner
)
fmt
.
Printf
(
"Version %s has started at :%d
\n
"
,
m
.
profile
.
Version
,
m
.
profile
.
Port
)
return
nil
return
s
.
Run
()
}
func
Execute
()
{
...
...
@@ -56,8 +55,6 @@ func Execute() {
println
(
"dsn:"
,
profile
.
DSN
)
println
(
"version:"
,
profile
.
Version
)
println
(
"---"
)
println
(
greetingBanner
)
fmt
.
Printf
(
"Version %s has started at :%d
\n
"
,
profile
.
Version
,
profile
.
Port
)
if
err
:=
m
.
Run
();
err
!=
nil
{
fmt
.
Printf
(
"error: %+v
\n
"
,
err
)
...
...
store/db/db.go
View file @
de705853
...
...
@@ -80,9 +80,8 @@ func (db *DB) Open() (err error) {
return
err
}
if
migrationHistory
==
nil
{
migrationHistory
,
err
=
upsertMigrationHistory
(
db
.
Db
,
&
MigrationHistoryCreate
{
Version
:
currentVersion
,
Statement
:
""
,
migrationHistory
,
err
=
upsertMigrationHistory
(
db
.
Db
,
&
MigrationHistoryUpsert
{
Version
:
currentVersion
,
})
if
err
!=
nil
{
return
err
...
...
@@ -91,16 +90,18 @@ func (db *DB) Open() (err error) {
if
common
.
IsVersionGreaterThan
(
currentVersion
,
migrationHistory
.
Version
)
{
minorVersionList
:=
getMinorVersionList
()
println
(
"start migrate"
)
for
_
,
minorVersion
:=
range
minorVersionList
{
normalizedVersion
:=
minorVersion
+
".0"
if
common
.
IsVersionGreaterThan
(
normalizedVersion
,
migrationHistory
.
Version
)
&&
common
.
IsVersionGreaterOrEqualThan
(
currentVersion
,
normalizedVersion
)
{
println
(
"applying migration for"
,
normalizedVersion
)
err
:=
db
.
applyMigrationForMinorVersion
(
minorVersion
)
if
err
!=
nil
{
return
fmt
.
Errorf
(
"failed to apply minor version migration: %w"
,
err
)
}
}
}
println
(
"end migrate"
)
}
}
}
...
...
@@ -148,9 +149,8 @@ func (db *DB) applyMigrationForMinorVersion(minorVersion string) error {
}
// upsert the newest version to migration_history
if
_
,
err
=
upsertMigrationHistory
(
db
.
Db
,
&
MigrationHistoryCreate
{
Version
:
minorVersion
+
".0"
,
Statement
:
migrationStmt
,
if
_
,
err
=
upsertMigrationHistory
(
db
.
Db
,
&
MigrationHistoryUpsert
{
Version
:
minorVersion
+
".0"
,
});
err
!=
nil
{
return
err
}
...
...
@@ -221,29 +221,12 @@ func getMinorVersionList() []string {
// createMigrationHistoryTable creates the migration_history table if it doesn't exist.
func
(
db
*
DB
)
createMigrationHistoryTable
()
error
{
table
,
err
:=
findTable
(
db
.
Db
,
"migration_history"
)
if
err
!=
nil
{
return
err
}
// TODO(steven): Drop the migration_history table if it exists temporarily.
if
table
!=
nil
{
err
=
db
.
execute
(
`
DROP TABLE IF EXISTS migration_history;
`
)
if
err
!=
nil
{
return
err
}
}
err
=
createTable
(
db
.
Db
,
`
CREATE TABLE migration_history (
if
err
:=
createTable
(
db
.
Db
,
`
CREATE TABLE IF NOT EXISTS migration_history (
version TEXT NOT NULL PRIMARY KEY,
statement TEXT NOT NULL DEFAULT '',
created_ts BIGINT NOT NULL DEFAULT (strftime('%s', 'now'))
);
`
)
if
err
!=
nil
{
`
);
err
!=
nil
{
return
err
}
...
...
store/db/migration/0.2/00__user_role.sql
View file @
de705853
-- change user role field from "OWNER"/"USER" to "HOST"/"USER".
PRAGMA
foreign_keys
=
off
;
BEGIN
TRANSACTION
;
DROP
TABLE
IF
EXISTS
_user_old
;
...
...
@@ -52,5 +51,4 @@ WHERE
DROP
TABLE
IF
EXISTS
_user_old
;
COMMIT
;
PRAGMA
foreign_keys
=
on
;
store/db/migration_history.go
View file @
de705853
...
...
@@ -7,13 +7,11 @@ import (
type
MigrationHistory
struct
{
Version
string
Statement
string
CreatedTs
int64
}
type
MigrationHistoryCreate
struct
{
Version
string
Statement
string
type
MigrationHistoryUpsert
struct
{
Version
string
}
type
MigrationHistoryFind
struct
{
...
...
@@ -71,21 +69,18 @@ func findMigrationHistory(db *sql.DB, find *MigrationHistoryFind) (*MigrationHis
}
}
func
upsertMigrationHistory
(
db
*
sql
.
DB
,
create
*
MigrationHistoryCreate
)
(
*
MigrationHistory
,
error
)
{
func
upsertMigrationHistory
(
db
*
sql
.
DB
,
upsert
*
MigrationHistoryUpsert
)
(
*
MigrationHistory
,
error
)
{
row
,
err
:=
db
.
Query
(
`
INSERT INTO migration_history (
version,
statement
version
)
VALUES (?
, ?
)
VALUES (?)
ON CONFLICT(version) DO UPDATE
SET
version=EXCLUDED.version,
statement=EXCLUDED.statement
RETURNING version, statement, created_ts
version=EXCLUDED.version
RETURNING version, created_ts
`
,
create
.
Version
,
create
.
Statement
,
upsert
.
Version
,
)
if
err
!=
nil
{
return
nil
,
err
...
...
@@ -96,7 +91,6 @@ func upsertMigrationHistory(db *sql.DB, create *MigrationHistoryCreate) (*Migrat
var
migrationHistory
MigrationHistory
if
err
:=
row
.
Scan
(
&
migrationHistory
.
Version
,
&
migrationHistory
.
Statement
,
&
migrationHistory
.
CreatedTs
,
);
err
!=
nil
{
return
nil
,
err
...
...
store/db/table.go
View file @
de705853
...
...
@@ -10,6 +10,7 @@ type Table struct {
SQL
string
}
//lint:ignore U1000 Ignore unused function temporarily for debugging
func
findTable
(
db
*
sql
.
DB
,
tableName
string
)
(
*
Table
,
error
)
{
where
,
args
:=
[]
string
{
"1 = 1"
},
[]
interface
{}{}
...
...
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