From f4a4b2830b2ade557116fc02a2fc903ac397d3db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20L=C3=B3pez=20Guimaraes?= Date: Sat, 20 Apr 2024 13:44:44 +0100 Subject: [PATCH] database: Update database defaults and add country This prevents errors when scanning the fields on the database --- database/3ds/get_friend_persistent_infos.go | 11 +++++++--- database/3ds/update_user_profile.go | 7 ++++--- database/init_postgres_3ds.go | 23 +++++++++++---------- database/init_postgres_wiiu.go | 2 +- 4 files changed, 25 insertions(+), 18 deletions(-) diff --git a/database/3ds/get_friend_persistent_infos.go b/database/3ds/get_friend_persistent_infos.go index d7e3345..1959b38 100644 --- a/database/3ds/get_friend_persistent_infos.go +++ b/database/3ds/get_friend_persistent_infos.go @@ -13,7 +13,7 @@ func GetFriendPersistentInfos(user1_pid uint32, pids []uint32) (*types.List[*fri persistentInfos.Type = friends_3ds_types.NewFriendPersistentInfo() rows, err := database.Postgres.Query(` - SELECT pid, region, area, language, favorite_title, favorite_title_version, comment, comment_changed, last_online, mii_changed FROM "3ds".user_data WHERE pid=ANY($1::int[])`, pq.Array(pids)) + SELECT pid, region, area, language, country, favorite_title, favorite_title_version, comment, comment_changed, last_online, mii_changed FROM "3ds".user_data WHERE pid=ANY($1::int[])`, pq.Array(pids)) if err != nil { return persistentInfos, err } @@ -28,6 +28,7 @@ func GetFriendPersistentInfos(user1_pid uint32, pids []uint32) (*types.List[*fri var region uint8 var area uint8 var language uint8 + var country uint8 var titleID uint64 var titleVersion uint16 var message string @@ -37,11 +38,12 @@ func GetFriendPersistentInfos(user1_pid uint32, pids []uint32) (*types.List[*fri // * This is allowed to error for now. // * Some of these fields are optional, and the DB doesn't have defaults - rows.Scan( + err := rows.Scan( &pid, ®ion, &area, &language, + &country, &titleID, &titleVersion, &message, @@ -49,13 +51,16 @@ func GetFriendPersistentInfos(user1_pid uint32, pids []uint32) (*types.List[*fri &lastOnlineTime, &miiModifiedAtTime, ) + if err != nil { + return persistentInfos, err + } gameKey.TitleID = types.NewPrimitiveU64(titleID) gameKey.TitleVersion = types.NewPrimitiveU16(titleVersion) persistentInfo.PID = types.NewPID(uint64(pid)) persistentInfo.Region = types.NewPrimitiveU8(region) - persistentInfo.Country = types.NewPrimitiveU8(0) // TODO - What is this? + persistentInfo.Country = types.NewPrimitiveU8(country) persistentInfo.Area = types.NewPrimitiveU8(area) persistentInfo.Language = types.NewPrimitiveU8(language) persistentInfo.Platform = types.NewPrimitiveU8(2) // * Always 3DS diff --git a/database/3ds/update_user_profile.go b/database/3ds/update_user_profile.go index 5a2e5d7..cfd5e2d 100644 --- a/database/3ds/update_user_profile.go +++ b/database/3ds/update_user_profile.go @@ -8,13 +8,14 @@ import ( // UpdateUserProfile updates a user's profile func UpdateUserProfile(pid uint32, profileData *friends_3ds_types.MyProfile) error { _, err := database.Postgres.Exec(` - INSERT INTO "3ds".user_data (pid, region, area, language) - VALUES ($1, $2, $3, $4) + INSERT INTO "3ds".user_data (pid, region, area, language, country) + VALUES ($1, $2, $3, $4, $5) ON CONFLICT (pid) DO UPDATE SET region = $2, area = $3, - language = $4`, pid, profileData.Region.Value, profileData.Area.Value, profileData.Language.Value) + language = $4, + country = $5`, pid, profileData.Region.Value, profileData.Area.Value, profileData.Language.Value, profileData.Country.Value) if err != nil { return err diff --git a/database/init_postgres_3ds.go b/database/init_postgres_3ds.go index a84548b..1706d2f 100644 --- a/database/init_postgres_3ds.go +++ b/database/init_postgres_3ds.go @@ -17,17 +17,18 @@ func initPostgres3DS() { pid integer PRIMARY KEY, show_online boolean DEFAULT true, show_current_game boolean DEFAULT true, - comment text, - comment_changed bigint, - last_online bigint, - favorite_title bigint, - favorite_title_version integer, - mii_name text, - mii_data bytea, - mii_changed bigint, - region integer, - area integer, - language integer + comment text DEFAULT '', + comment_changed bigint DEFAULT 0, + last_online bigint DEFAULT 0, + favorite_title bigint DEFAULT 0, + favorite_title_version integer DEFAULT 0, + mii_name text DEFAULT '', + mii_data bytea DEFAULT '', + mii_changed bigint DEFAULT 0, + region integer DEFAULT 0, + area integer DEFAULT 0, + language integer DEFAULT 0, + country integer DEFAULT 0 )`) if err != nil { globals.Logger.Critical(err.Error()) diff --git a/database/init_postgres_wiiu.go b/database/init_postgres_wiiu.go index eaf25a8..494aed0 100644 --- a/database/init_postgres_wiiu.go +++ b/database/init_postgres_wiiu.go @@ -20,7 +20,7 @@ func initPostgresWiiU() { block_friend_requests boolean DEFAULT false, comment text DEFAULT '', comment_changed bigint DEFAULT 0, - last_online bigint + last_online bigint DEFAULT 0 )`) if err != nil { globals.Logger.Critical(err.Error())