diff --git a/database/mdb/code.go b/database/mdb/code.go new file mode 100644 index 0000000..3f85b91 --- /dev/null +++ b/database/mdb/code.go @@ -0,0 +1,33 @@ +package mdb + +import ( + "context" + "kurumibot/database" + "kurumibot/laniakea" + "time" + + "go.mongodb.org/mongo-driver/v2/bson" +) + +type CodeEntry struct { + Code string `bson:"code"` + Money uint64 `bson:"money"` + Exp uint64 `bson:"exp"` + AutoId uint16 `bson:"autoId"` + MaidId uint16 `bson:"maidId"` + MinerId uint16 `bson:"minerId"` + BusinessId uint16 `bson:"businessId"` + ValidUntil time.Time `bson:"validUntil"` + UsageCount int `bson:"usageCount"` + TotalUsages uint `bson:"totalUsages"` +} + +func FindCode(db *laniakea.DatabaseContext, code string) (*CodeEntry, error) { + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + collection := database.GetMongoCollection(db, "codes") + res := collection.FindOne(ctx, bson.M{"code": code}) + entry := new(CodeEntry) + err := res.Decode(entry) + return entry, err +} diff --git a/database/mongo.go b/database/mongo.go index 4f44d99..8c91044 100644 --- a/database/mongo.go +++ b/database/mongo.go @@ -2,6 +2,7 @@ package database import ( "fmt" + "kurumibot/laniakea" "log" "os" @@ -25,3 +26,7 @@ func ConnectMongo() { log.Fatalln(err) } } + +func GetMongoCollection(db *laniakea.DatabaseContext, name string) *mongo.Collection { + return db.MongoDB.Database(os.Getenv("MONGO_NAME")).Collection(name) +} diff --git a/database/psql/groups.go b/database/psql/groups.go index e6220d5..977b56b 100644 --- a/database/psql/groups.go +++ b/database/psql/groups.go @@ -1,6 +1,10 @@ package psql -import "github.com/shopspring/decimal" +import ( + "kurumibot/database" + + "github.com/shopspring/decimal" +) type Group struct { ID int @@ -13,8 +17,8 @@ type Group struct { MaxWaifus int } -// func GetGroupById(id int) (*Group, error) { -// group := new(Group) -// // err := Database.Get(group, "select * from groups where id=$1;", id) -// return group, err -// } +func GetGroupById(id int) (*Group, error) { + group := new(Group) + tx := database.PostgresDatabase.First(group, "id = ?", id) + return group, tx.Error +} diff --git a/database/psql/users.go b/database/psql/users.go index d9c484e..07b97e3 100644 --- a/database/psql/users.go +++ b/database/psql/users.go @@ -24,6 +24,7 @@ type User struct { WorkID int `gorm:"default:1"` Work *Work WorkTime time.Time + AutoID sql.NullInt64 Auto *ShopAuto BusinessID sql.NullInt64 @@ -32,6 +33,7 @@ type User struct { Maid *ShopMaid MinerID sql.NullInt64 Miner *ShopMiner + IncomeTime time.Time BTC decimal.Decimal Invested decimal.Decimal diff --git a/kurumibot b/kurumibot new file mode 100755 index 0000000..4c543ea Binary files /dev/null and b/kurumibot differ