43 lines
1.1 KiB
Go
43 lines
1.1 KiB
Go
package persistence
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
type SpaceID string
|
|
|
|
type Space struct {
|
|
ID SpaceID `db:"id"`
|
|
ShortUrl string `db:"short_url"`
|
|
State string `db:"state"`
|
|
Title string `db:"title"`
|
|
CreatedAt Timestamp `db:"created_at"`
|
|
StartedAt Timestamp `db:"started_at"`
|
|
EndedAt Timestamp `db:"ended_at"`
|
|
UpdatedAt Timestamp `db:"updated_at"`
|
|
IsAvailableForReplay bool `db:"is_available_for_replay"`
|
|
ReplayWatchCount int `db:"replay_watch_count"`
|
|
LiveListenersCount int `db:"live_listeners_count"`
|
|
ParticipantIds []UserID
|
|
|
|
CreatedById UserID `db:"created_by_id"`
|
|
TweetID TweetID
|
|
|
|
IsDetailsFetched bool `db:"is_details_fetched"`
|
|
}
|
|
|
|
// TODO: view-layer
|
|
// - view helpers should go in a view layer
|
|
|
|
func (space Space) FormatDuration() string {
|
|
duration := space.EndedAt.Time.Sub(space.StartedAt.Time)
|
|
h := int(duration.Hours())
|
|
m := int(duration.Minutes()) % 60
|
|
s := int(duration.Seconds()) % 60
|
|
|
|
if h != 0 {
|
|
return fmt.Sprintf("%dh%02dm", h, m)
|
|
}
|
|
return fmt.Sprintf("%dm%02ds", m, s)
|
|
}
|