Update to newer database mechanism (postgresql)

This commit is contained in:
SuperMarioDaBom 2025-02-21 09:54:23 -08:00
parent 694883da50
commit 174c63cdcb
7 changed files with 61 additions and 78 deletions

View File

@ -21,4 +21,5 @@ func ConnectPostgres() {
globals.Logger.Success("Connected to Postgres!")
InitPostgres()
}

View File

@ -1,18 +1,14 @@
package database
import (
"context"
"go.mongodb.org/mongo-driver/bson"
"github.com/PretendoNetwork/nex-go/v2/types"
"github.com/PretendoNetwork/wiiu-chat/globals"
)
func EndCall(caller uint32) {
filter := bson.D{
{"caller_pid", caller},
}
_, err := callsCollection.DeleteOne(context.TODO(), filter)
func EndCall(caller types.PID) {
_, err := Postgres.Exec(`DELETE FROM ongoingcalls WHERE caller_pid = $1;`, caller)
if err != nil {
panic(err)
globals.Logger.Critical(err.Error())
return
}
}

View File

@ -1,26 +1,14 @@
package database
import (
"context"
"go.mongodb.org/mongo-driver/bson"
"github.com/PretendoNetwork/nex-go/v2/types"
"github.com/PretendoNetwork/wiiu-chat/globals"
)
func EndCallRinging(caller uint32) {
filter := bson.D{
{"caller_pid", caller},
}
update := bson.D{
{
"$set", bson.D{
{"ringing", false},
},
},
}
_, err := callsCollection.UpdateOne(context.TODO(), filter, update)
func EndCallRinging(caller types.PID) {
_, err := Postgres.Exec(`UPDATE ongoingcalls SET (ringing = $1) WHERE caller_pid = $2;`, false, caller)
if err != nil {
panic(err)
globals.Logger.Critical(err.Error())
return
}
}

View File

@ -1,27 +1,16 @@
package database
import (
"context"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"github.com/PretendoNetwork/nex-go/v2/types"
"github.com/PretendoNetwork/wiiu-chat/globals"
)
func GetCallInfoByCaller(caller uint32) (uint32, uint32, bool) { // caller pid, target pid, ringing
var result bson.M
filter := bson.D{
{"caller_pid", caller},
}
err := callsCollection.FindOne(context.TODO(), filter, options.FindOne()).Decode(&result)
func GetCallInfoByCaller(caller types.PID) (caller_pid types.PID, target_pid types.PID, ringing types.Bool) {
row := Postgres.QueryRow(`SELECT (caller_pid, target_pid, ringing) FROM ongoingcalls WHERE caller_pid = $1;`, caller)
err := row.Scan(&caller_pid, &target_pid, &ringing)
if err != nil {
if err == mongo.ErrNoDocuments {
return 0, 0, false
} else {
panic(err)
}
} else {
return uint32(result["caller_pid"].(int64)), uint32(result["target_pid"].(int64)), result["ringing"].(bool)
globals.Logger.Critical(err.Error())
return 0, 0, false
}
return caller_pid, target_pid, ringing
}

View File

@ -1,27 +1,16 @@
package database
import (
"context"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"github.com/PretendoNetwork/nex-go/v2/types"
"github.com/PretendoNetwork/wiiu-chat/globals"
)
func GetCallInfoByTarget(target uint32) (uint32, uint32, bool) { // caller pid, target pid, ringing
var result bson.M
filter := bson.D{
{"target_pid", target},
}
err := callsCollection.FindOne(context.TODO(), filter, options.FindOne()).Decode(&result)
func GetCallInfoByTarget(target types.PID) (caller_pid types.PID, target_pid types.PID, ringing types.Bool) {
row := Postgres.QueryRow(`SELECT (caller_pid, target_pid, ringing) FROM ongoingcalls WHERE target_pid = $1;`, target)
err := row.Scan(&caller_pid, &target_pid, &ringing)
if err != nil {
if err == mongo.ErrNoDocuments {
return 0, 0, false
} else {
panic(err)
}
} else {
return uint32(result["caller_pid"].(int64)), uint32(result["target_pid"].(int64)), result["ringing"].(bool)
globals.Logger.Warning(err.Error())
return 0, 0, false
}
return caller_pid, target_pid, ringing
}

26
database/init_postgres.go Normal file
View File

@ -0,0 +1,26 @@
package database
import "github.com/PretendoNetwork/wiiu-chat/globals"
func InitPostgres() {
var err error
_, err = Postgres.Exec(`CREATE TABLE IF NOT EXISTS ongoingcalls (
caller_pid integer UNIQUE PRIMARY KEY,
target_pid integer,
ringing bool
)`)
if err != nil {
globals.Logger.Critical(err.Error())
return
}
// Empty out call list if there happens to be old data lingering
_, err = Postgres.Exec(`DELETE FROM ongoingcalls;`)
if err != nil {
globals.Logger.Critical(err.Error())
return
}
globals.Logger.Success("Postgres tables created")
}

View File

@ -1,20 +1,14 @@
package database
import (
"context"
"go.mongodb.org/mongo-driver/bson"
"github.com/PretendoNetwork/nex-go/v2/types"
"github.com/PretendoNetwork/wiiu-chat/globals"
)
func NewCall(caller uint32, target uint32) {
document := bson.D{
{"caller_pid", caller},
{"target_pid", target},
{"ringing", true},
}
_, err := callsCollection.InsertOne(context.TODO(), document)
func NewCall(caller types.PID, target types.PID) {
_, err := Postgres.Exec(`INSERT INTO ongoingcalls (caller_pid, target_pid, ringing) VALUES ($1, $2, $3);`, caller, target, true)
if err != nil {
panic(err)
globals.Logger.Critical(err.Error())
return
}
}