88
99type MigrationStats struct {
1010 Users int
11- Accounts int
1211 Books int
1312 Notes int
1413 Tokens int
@@ -28,20 +27,13 @@ func migrate(pgDB, sqliteDB *sql.DB) error {
2827
2928 var stats MigrationStats
3029
31- // Migrate users
30+ // Migrate users (with email/password from accounts table)
3231 fmt .Println ("Migrating users..." )
3332 if err := migrateUsers (pgDB , tx , & stats ); err != nil {
3433 return fmt .Errorf ("migrating users: %w" , err )
3534 }
3635 fmt .Printf (" Migrated %d users\n " , stats .Users )
3736
38- // Migrate accounts
39- fmt .Println ("Migrating accounts..." )
40- if err := migrateAccounts (pgDB , tx , & stats ); err != nil {
41- return fmt .Errorf ("migrating accounts: %w" , err )
42- }
43- fmt .Printf (" Migrated %d accounts\n " , stats .Accounts )
44-
4537 // Migrate books
4638 fmt .Println ("Migrating books..." )
4739 if err := migrateBooks (pgDB , tx , & stats ); err != nil {
@@ -78,7 +70,6 @@ func migrate(pgDB, sqliteDB *sql.DB) error {
7870 // Print summary
7971 fmt .Println ("\n Migration Summary:" )
8072 fmt .Printf (" Users: %d\n " , stats .Users )
81- fmt .Printf (" Accounts: %d\n " , stats .Accounts )
8273 fmt .Printf (" Books: %d\n " , stats .Books )
8374 fmt .Printf (" Notes: %d\n " , stats .Notes )
8475 fmt .Printf (" Tokens: %d\n " , stats .Tokens )
@@ -89,18 +80,21 @@ func migrate(pgDB, sqliteDB *sql.DB) error {
8980
9081func migrateUsers (pgDB * sql.DB , tx * sql.Tx , stats * MigrationStats ) error {
9182 rows , err := pgDB .Query (`
92- SELECT id, created_at, updated_at, uuid, last_login_at, max_usn, cloud
93- FROM users
94- ORDER BY id
83+ SELECT
84+ u.id, u.created_at, u.updated_at, u.uuid, u.last_login_at, u.max_usn,
85+ a.email, a.password
86+ FROM users u
87+ LEFT JOIN accounts a ON u.id = a.user_id
88+ ORDER BY u.id
9589 ` )
9690 if err != nil {
9791 return err
9892 }
9993 defer rows .Close ()
10094
10195 stmt , err := tx .Prepare (`
102- INSERT INTO users (id, created_at, updated_at, uuid, last_login_at, max_usn)
103- VALUES (?, ?, ?, ?, ?, ?)
96+ INSERT INTO users (id, created_at, updated_at, uuid, last_login_at, max_usn, email, password )
97+ VALUES (?, ?, ?, ?, ?, ?, ?, ? )
10498 ` )
10599 if err != nil {
106100 return err
@@ -112,54 +106,16 @@ func migrateUsers(pgDB *sql.DB, tx *sql.Tx, stats *MigrationStats) error {
112106 var createdAt , updatedAt time.Time
113107 var uuid string
114108 var lastLoginAt sql.NullTime
115- var cloud bool // Read but ignore
116-
117- if err := rows .Scan (& id , & createdAt , & updatedAt , & uuid , & lastLoginAt , & maxUSN , & cloud ); err != nil {
118- return err
119- }
120-
121- if _ , err := stmt .Exec (id , createdAt , updatedAt , uuid , lastLoginAt , maxUSN ); err != nil {
122- return err
123- }
124- stats .Users ++
125- }
126-
127- return rows .Err ()
128- }
129-
130- func migrateAccounts (pgDB * sql.DB , tx * sql.Tx , stats * MigrationStats ) error {
131- rows , err := pgDB .Query (`
132- SELECT id, created_at, updated_at, user_id, email, password
133- FROM accounts
134- ORDER BY id
135- ` )
136- if err != nil {
137- return err
138- }
139- defer rows .Close ()
140-
141- stmt , err := tx .Prepare (`
142- INSERT INTO accounts (id, created_at, updated_at, user_id, email, password)
143- VALUES (?, ?, ?, ?, ?, ?)
144- ` )
145- if err != nil {
146- return err
147- }
148- defer stmt .Close ()
149-
150- for rows .Next () {
151- var id , userID int
152- var createdAt , updatedAt time.Time
153109 var email , password sql.NullString
154110
155- if err := rows .Scan (& id , & createdAt , & updatedAt , & userID , & email , & password ); err != nil {
111+ if err := rows .Scan (& id , & createdAt , & updatedAt , & uuid , & lastLoginAt , & maxUSN , & email , & password ); err != nil {
156112 return err
157113 }
158114
159- if _ , err := stmt .Exec (id , createdAt , updatedAt , userID , email , password ); err != nil {
115+ if _ , err := stmt .Exec (id , createdAt , updatedAt , uuid , lastLoginAt , maxUSN , email , password ); err != nil {
160116 return err
161117 }
162- stats .Accounts ++
118+ stats .Users ++
163119 }
164120
165121 return rows .Err ()
0 commit comments