@@ -30,10 +30,21 @@ async function initializeUsersTable() {
3030 settings_updated_at TIMESTAMP DEFAULT NOW(),
3131 total_sessions_created INTEGER DEFAULT 0,
3232 total_minutes INTEGER DEFAULT 0,
33+ -- VATSIM linkage
34+ vatsim_cid VARCHAR(16),
35+ vatsim_rating_id INTEGER,
36+ vatsim_rating_short VARCHAR(8),
37+ vatsim_rating_long VARCHAR(32),
3338 created_at TIMESTAMP DEFAULT NOW(),
3439 updated_at TIMESTAMP DEFAULT NOW()
3540 )
3641 ` ) ;
42+ } else {
43+ // Ensure VATSIM columns exist on existing installations
44+ await pool . query ( "ALTER TABLE users ADD COLUMN IF NOT EXISTS vatsim_cid VARCHAR(16)" ) ;
45+ await pool . query ( "ALTER TABLE users ADD COLUMN IF NOT EXISTS vatsim_rating_id INTEGER" ) ;
46+ await pool . query ( "ALTER TABLE users ADD COLUMN IF NOT EXISTS vatsim_rating_short VARCHAR(8)" ) ;
47+ await pool . query ( "ALTER TABLE users ADD COLUMN IF NOT EXISTS vatsim_rating_long VARCHAR(32)" ) ;
3748 }
3849 } catch ( error ) {
3950 console . error ( 'Error initializing users table:' , error ) ;
@@ -310,7 +321,12 @@ export async function getUserById(id) {
310321 roleName : user . role_name ,
311322 rolePermissions : rolePermissions ,
312323 robloxUserId : user . roblox_user_id ,
313- robloxUsername : user . roblox_username
324+ robloxUsername : user . roblox_username ,
325+ // VATSIM linkage
326+ vatsimCid : user . vatsim_cid ,
327+ vatsimRatingId : user . vatsim_rating_id ,
328+ vatsimRatingShort : user . vatsim_rating_short ,
329+ vatsimRatingLong : user . vatsim_rating_long
314330 } ;
315331 } catch ( error ) {
316332 console . error ( 'Error fetching user:' , error ) ;
@@ -406,6 +422,44 @@ export async function unlinkRobloxAccount(userId) {
406422 }
407423}
408424
425+ export async function updateVatsimAccount ( userId , { vatsimCid, ratingId, ratingShort, ratingLong } ) {
426+ try {
427+ await pool . query ( `
428+ UPDATE users SET
429+ vatsim_cid = $2,
430+ vatsim_rating_id = $3,
431+ vatsim_rating_short = $4,
432+ vatsim_rating_long = $5,
433+ updated_at = NOW()
434+ WHERE id = $1
435+ ` , [ userId , vatsimCid , ratingId , ratingShort , ratingLong ] ) ;
436+
437+ return await getUserById ( userId ) ;
438+ } catch ( error ) {
439+ console . error ( 'Error updating VATSIM account:' , error ) ;
440+ throw error ;
441+ }
442+ }
443+
444+ export async function unlinkVatsimAccount ( userId ) {
445+ try {
446+ await pool . query ( `
447+ UPDATE users SET
448+ vatsim_cid = NULL,
449+ vatsim_rating_id = NULL,
450+ vatsim_rating_short = NULL,
451+ vatsim_rating_long = NULL,
452+ updated_at = NOW()
453+ WHERE id = $1
454+ ` , [ userId ] ) ;
455+
456+ return await getUserById ( userId ) ;
457+ } catch ( error ) {
458+ console . error ( 'Error unlinking VATSIM account:' , error ) ;
459+ throw error ;
460+ }
461+ }
462+
409463initializeUsersTable ( ) ;
410464
411- export { initializeUsersTable } ;
465+ export { initializeUsersTable } ;
0 commit comments