Karma-Telegram-Bot/Database/Structs.go
2024-04-04 14:21:09 +02:00

76 lines
1.8 KiB
Go

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
}