@@ -13,62 +13,55 @@ pub(super) fn migrate_schema(
1313) -> io:: Result < ( ) > {
1414 assert ! ( from_version < to_version) ;
1515 if from_version == 1 && to_version == 2 {
16- let tx = connection. transaction ( ) . map_err ( |e| {
17- let msg = format ! (
18- "Failed to migrate table {} from user_version {} to {}: {}" ,
19- kv_table_name, from_version, to_version, e
20- ) ;
21- io:: Error :: new ( io:: ErrorKind :: Other , msg)
22- } ) ?;
23-
24- // Rename 'namespace' column to 'primary_namespace'
25- let sql = format ! (
26- "ALTER TABLE {}
27- RENAME COLUMN namespace TO primary_namespace;" ,
28- kv_table_name
29- ) ;
30-
31- tx. execute ( & sql, [ ] ) . map_err ( |e| {
32- let msg = format ! (
33- "Failed to migrate table {} from user_version {} to {}: {}" ,
34- kv_table_name, from_version, to_version, e
35- ) ;
36- io:: Error :: new ( io:: ErrorKind :: Other , msg)
37- } ) ?;
38-
39- // Add new 'secondary_namespace' column
40- let sql = format ! (
41- "ALTER TABLE {}
42- ADD secondary_namespace TEXT DEFAULT \" \" NOT NULL;" ,
43- kv_table_name
44- ) ;
45-
46- tx. execute ( & sql, [ ] ) . map_err ( |e| {
47- let msg = format ! (
48- "Failed to migrate table {} from user_version {} to {}: {}" ,
49- kv_table_name, from_version, to_version, e
50- ) ;
51- io:: Error :: new ( io:: ErrorKind :: Other , msg)
52- } ) ?;
53-
54- // Update user_version
55- tx. pragma ( Some ( rusqlite:: DatabaseName :: Main ) , "user_version" , to_version, |_| Ok ( ( ) ) )
56- . map_err ( |e| {
57- let msg = format ! (
58- "Failed to upgrade user_version from {} to {}: {}" ,
59- from_version, to_version, e
60- ) ;
61- io:: Error :: new ( io:: ErrorKind :: Other , msg)
62- } ) ?;
16+ migrate_v1_to_v2 ( connection, kv_table_name) ?;
17+ }
6318
64- tx. commit ( ) . map_err ( |e| {
65- let msg = format ! (
66- "Failed to migrate table {} from user_version {} to {}: {}" ,
67- kv_table_name, from_version, to_version, e
68- ) ;
19+ Ok ( ( ) )
20+ }
21+
22+ fn migrate_v1_to_v2 ( connection : & mut Connection , kv_table_name : & str ) -> io:: Result < ( ) > {
23+ let tx = connection. transaction ( ) . map_err ( |e| {
24+ let msg = format ! ( "Failed to migrate table {} from v1 to v2: {}" , kv_table_name, e) ;
25+ io:: Error :: new ( io:: ErrorKind :: Other , msg)
26+ } ) ?;
27+
28+ // Rename 'namespace' column to 'primary_namespace'
29+ let sql = format ! (
30+ "ALTER TABLE {}
31+ RENAME COLUMN namespace TO primary_namespace;" ,
32+ kv_table_name
33+ ) ;
34+
35+ tx. execute ( & sql, [ ] ) . map_err ( |e| {
36+ let msg = format ! ( "Failed to migrate table {} from v1 to v2: {}" , kv_table_name, e) ;
37+ io:: Error :: new ( io:: ErrorKind :: Other , msg)
38+ } ) ?;
39+
40+ // Add new 'secondary_namespace' column
41+ let sql = format ! (
42+ "ALTER TABLE {}
43+ ADD secondary_namespace TEXT DEFAULT \" \" NOT NULL;" ,
44+ kv_table_name
45+ ) ;
46+
47+ tx. execute ( & sql, [ ] ) . map_err ( |e| {
48+ let msg = format ! ( "Failed to migrate table {} from v1 to v2: {}" , kv_table_name, e) ;
49+ io:: Error :: new ( io:: ErrorKind :: Other , msg)
50+ } ) ?;
51+
52+ // Update user_version
53+ tx. pragma ( Some ( rusqlite:: DatabaseName :: Main ) , "user_version" , 2u16 , |_| Ok ( ( ) ) ) . map_err (
54+ |e| {
55+ let msg = format ! ( "Failed to upgrade user_version from 1 to 2: {}" , e) ;
6956 io:: Error :: new ( io:: ErrorKind :: Other , msg)
70- } ) ?;
71- }
57+ } ,
58+ ) ?;
59+
60+ tx. commit ( ) . map_err ( |e| {
61+ let msg = format ! ( "Failed to migrate table {} from v1 to v2: {}" , kv_table_name, e) ;
62+ io:: Error :: new ( io:: ErrorKind :: Other , msg)
63+ } ) ?;
64+
7265 Ok ( ( ) )
7366}
7467
0 commit comments