first commit

This commit is contained in:
ZennDev1337 2024-04-04 14:21:09 +02:00
commit 07393f57d3
10 changed files with 194 additions and 0 deletions

8
.idea/.gitignore generated vendored Normal file
View file

@ -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

9
.idea/Karma-Telegram-Bot.iml generated Normal file
View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="Go" enabled="true" />
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

8
.idea/modules.xml generated Normal file
View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/Karma-Telegram-Bot.iml" filepath="$PROJECT_DIR$/.idea/Karma-Telegram-Bot.iml" />
</modules>
</component>
</project>

6
.idea/sqldialects.xml generated Normal file
View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="SqlDialectMappings">
<file url="PROJECT" dialect="MySQL" />
</component>
</project>

25
Database/Schema.go Normal file
View file

@ -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)
);`,
}

76
Database/Structs.go Normal file
View file

@ -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
}

33
Database/main.go Normal file
View file

@ -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) {
}

9
go.mod Normal file
View file

@ -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
)

9
go.sum Normal file
View file

@ -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=

11
main.go Normal file
View file

@ -0,0 +1,11 @@
package main
import (
. "Karma-Telegram-Bot/Database"
"fmt"
)
func main() {
fmt.Println("Go Fast!!")
DbHandler.ConnectToDb()
}