From 07393f57d3e601bc606dc54026cc674a354be44d Mon Sep 17 00:00:00 2001 From: ZennDev1337 Date: Thu, 4 Apr 2024 14:21:09 +0200 Subject: [PATCH] first commit --- .idea/.gitignore | 8 ++++ .idea/Karma-Telegram-Bot.iml | 9 +++++ .idea/modules.xml | 8 ++++ .idea/sqldialects.xml | 6 +++ Database/Schema.go | 25 ++++++++++++ Database/Structs.go | 76 ++++++++++++++++++++++++++++++++++++ Database/main.go | 33 ++++++++++++++++ go.mod | 9 +++++ go.sum | 9 +++++ main.go | 11 ++++++ 10 files changed, 194 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/Karma-Telegram-Bot.iml create mode 100644 .idea/modules.xml create mode 100644 .idea/sqldialects.xml create mode 100644 Database/Schema.go create mode 100644 Database/Structs.go create mode 100644 Database/main.go create mode 100644 go.mod create mode 100644 go.sum create mode 100644 main.go diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/Karma-Telegram-Bot.iml b/.idea/Karma-Telegram-Bot.iml new file mode 100644 index 0000000..5e764c4 --- /dev/null +++ b/.idea/Karma-Telegram-Bot.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..cdb20f8 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml new file mode 100644 index 0000000..56782ca --- /dev/null +++ b/.idea/sqldialects.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Database/Schema.go b/Database/Schema.go new file mode 100644 index 0000000..eeaebf9 --- /dev/null +++ b/Database/Schema.go @@ -0,0 +1,25 @@ +package Database + +import ( + _ "github.com/go-sql-driver/mysql" +) + +var schema = []string{ + `CREATE TABLE IF NOT EXISTS DB_Channel ( + cid INT AUTO_INCREMENT PRIMARY KEY, + channel_name VARCHAR(255) NOT NULL +);`, + `CREATE TABLE IF NOT EXISTS DB_User ( + uid INT AUTO_INCREMENT PRIMARY KEY, + display_name VARCHAR(255), + username VARCHAR(255) NOT NULL +);`, + `CREATE TABLE IF NOT EXISTS DB_User_Channel ( + fk_uid INT NOT NULL, + fk_cid INT NOT NULL, + points INT NOT NULL, + is_admin BOOLEAN default(false), + FOREIGN KEY (fk_uid) REFERENCES DB_User(uid), + FOREIGN KEY (fk_cid) REFERENCES DB_Channel(cid) +);`, +} diff --git a/Database/Structs.go b/Database/Structs.go new file mode 100644 index 0000000..d3e7e6b --- /dev/null +++ b/Database/Structs.go @@ -0,0 +1,76 @@ +package Database + +import "database/sql" + +type DbUser struct { + UserID int `db:"uid"` + DisplayName sql.NullString `db:"display_name"` + Username string `db:"username"` +} +type DbChannel struct { + ChannelID int `db:"cid"` + ChannelName sql.NullString `db:"channel_name"` +} +type DbUserChannel struct { + FkUserId int `db:"fk_uid"` + FkChannelId int `db:"fk_cid"` + Points int `db:"points"` + IsAdmin bool `db:"is_admin"` +} + +type DbDto struct { + UserID int `db:"uid"` + DisplayName sql.NullString `db:"display_name"` + Username string `db:"username"` + ChannelID int `db:"cid"` + ChannelName sql.NullString `db:"channel_name"` + Points int `db:"points"` + IsAdmin bool `db:"is_admin"` +} + +func NewDbDto(user *DbUser, channel *DbChannel, userChannel *DbUserChannel) *DbDto { + if userChannel == nil { + userChannel = &DbUserChannel{} + } + if user == nil { + user = &DbUser{UserID: userChannel.FkUserId} + } + if channel == nil { + channel = &DbChannel{ChannelID: userChannel.FkChannelId} + } + dto := &DbDto{ + UserID: user.UserID, + DisplayName: user.DisplayName, + Username: user.Username, + ChannelID: channel.ChannelID, + ChannelName: channel.ChannelName, + Points: userChannel.Points, + IsAdmin: userChannel.IsAdmin, + } + return dto +} + +func (d *DbDto) ToDbUser() *DbUser { + user := &DbUser{ + UserID: d.UserID, + DisplayName: d.DisplayName, + Username: d.Username, + } + return user +} +func (d *DbDto) ToDbChannel() *DbChannel { + channel := &DbChannel{ + ChannelID: d.ChannelID, + ChannelName: d.ChannelName, + } + return channel +} +func (d *DbDto) ToDbUserChannel() *DbUserChannel { + userChannel := &DbUserChannel{ + FkUserId: d.UserID, + FkChannelId: d.ChannelID, + Points: d.Points, + IsAdmin: d.IsAdmin, + } + return userChannel +} diff --git a/Database/main.go b/Database/main.go new file mode 100644 index 0000000..b0d4d12 --- /dev/null +++ b/Database/main.go @@ -0,0 +1,33 @@ +package Database + +import ( + _ "github.com/go-sql-driver/mysql" + "github.com/jmoiron/sqlx" + "log" + "time" +) + +type DbHandlerType struct { + Sqlx *sqlx.DB +} + +var DbHandler *DbHandlerType + +func (database *DbHandlerType) ConnectToDb() { + DbHandler := &DbHandlerType{} + db, err := sqlx.Connect("mysql", "user:Sml12345@(10.0.1.5:3306)/karma") + DbHandler.Sqlx = db + DbHandler.Sqlx.SetConnMaxLifetime(time.Minute * 5) + if err != nil { + log.Fatalln(err) + } + for i := range schema { + DbHandler.Sqlx.MustExec(schema[i]) + } +} +func (database *DbHandlerType) AddPoint(uid int, cid int) { + +} +func (database *DbHandlerType) GetPoints(uid int, cid int) { + +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..4388175 --- /dev/null +++ b/go.mod @@ -0,0 +1,9 @@ +module Karma-Telegram-Bot + +go 1.22 + +require ( + filippo.io/edwards25519 v1.1.0 // indirect + github.com/go-sql-driver/mysql v1.8.1 // indirect + github.com/jmoiron/sqlx v1.3.5 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..b675350 --- /dev/null +++ b/go.sum @@ -0,0 +1,9 @@ +filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= +filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= +github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y= +github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= +github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= +github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ= +github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= diff --git a/main.go b/main.go new file mode 100644 index 0000000..f253fa0 --- /dev/null +++ b/main.go @@ -0,0 +1,11 @@ +package main + +import ( + . "Karma-Telegram-Bot/Database" + "fmt" +) + +func main() { + fmt.Println("Go Fast!!") + DbHandler.ConnectToDb() +}