76 lines
1.8 KiB
Go
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
|
|
}
|