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 }