model

package
v0.0.0-...-efe0c35 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 2, 2026 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CompanyTypeDeveloper = "dev"
	CompanyTypePublisher = "pub"
)

company types

Variables

View Source
var (
	OrderGamesByDefault = OrderBy{
		Field: "trending_index",
		Order: DescendingSortOrder,
	}
	OrderGamesByReleaseDate = OrderBy{
		Field: "release_date",
		Order: DescendingSortOrder,
	}
	OrderGamesByName = OrderBy{
		Field: "name",
		Order: AscendingSortOrder,
	}
	OrderGamesByRating = OrderBy{
		Field: "rating",
		Order: DescendingSortOrder,
	}
)

OrderGamesBy options

Functions

func GetGameSlug

func GetGameSlug(name string) string

GetGameSlug - returns game slug by name

Types

type Company

type Company struct {
	ID     int32         `db:"id"`
	Name   string        `db:"name"`
	IGDBID sql.NullInt64 `db:"igdb_id"`
}

Company represents company entity

type CreateGame

type CreateGame struct {
	Name         string
	ReleaseDate  string
	GenresIDs    []int32
	LogoURL      string
	Summary      string
	Slug         string
	PlatformsIDs []int32
	Screenshots  []string
	Websites     []string
	Developer    string // helper field
	Publisher    string // helper field
}

CreateGame - create game data

func (CreateGame) MapToCreateGameData

func (cg CreateGame) MapToCreateGameData(publisherID, developerID int32) CreateGameData

MapToCreateGameData maps CreateGame to CreateGameData

type CreateGameData

type CreateGameData struct {
	Name             string
	DevelopersIDs    []int32
	PublishersIDs    []int32
	ReleaseDate      string
	GenresIDs        []int32
	LogoURL          string
	Summary          string
	Slug             string
	PlatformsIDs     []int32
	Screenshots      []string
	Websites         []string
	IGDBRating       float64
	IGDBRatingCount  int32
	IGDBID           int64
	ModerationStatus ModerationStatus
}

CreateGameData - data for creating game in db

type CreateModeration

type CreateModeration struct {
	GameID   int32
	GameData ModerationData
	Status   ModerationStatus
}

CreateModeration represents data required to create moderation record

func NewCreateModeration

func NewCreateModeration(gameID int32, gameData ModerationData) CreateModeration

NewCreateModeration creates new CreateModeration

type CreateRating

type CreateRating struct {
	Rating uint8
	UserID string
	GameID int32
}

CreateRating represents data for rating a game

type File

type File struct {
	FileName string
	FileID   string
	FileURL  string
	Type     string
}

File represents an uploaded file

type Game

type Game struct {
	ID               int32            `db:"id"`
	Name             string           `db:"name"`
	DevelopersIDs    []int32          `db:"developers"`
	PublishersIDs    []int32          `db:"publishers"`
	ReleaseDate      types.Date       `db:"release_date"`
	GenresIDs        []int32          `db:"genres"`
	LogoURL          string           `db:"logo_url"`
	Rating           float64          `db:"rating"`
	Summary          string           `db:"summary"`
	Slug             string           `db:"slug"`
	PlatformsIDs     []int32          `db:"platforms"`
	Screenshots      []string         `db:"screenshots"`
	Websites         []string         `db:"websites"`
	IGDBRating       float64          `db:"igdb_rating"`
	IGDBRatingCount  int32            `db:"igdb_rating_count"`
	IGDBID           int64            `db:"igdb_id"`
	ModerationStatus ModerationStatus `db:"moderation_status"`
	ModerationID     sql.NullInt32    `db:"moderation_id"`
	TrendingIndex    float64          `db:"trending_index"`
}

Game - db game model

type GameModerationData

type GameModerationData struct {
	Game        Game
	Moderations []Moderation
}

GameModerationData aggregates a game with its moderation history

type GameTrendingData

type GameTrendingData struct {
	Year            int     `db:"release_year"`
	Month           int     `db:"release_month"`
	IGDBRating      float64 `db:"igdb_rating"`
	IGDBRatingCount int32   `db:"igdb_rating_count"`
	Rating          float64 `db:"rating"`
	RatingCount     int32   `db:"rating_count"`
}

GameTrendingData contains data needed for trending index calculation

type GamesFilter

type GamesFilter struct {
	Name        string
	DeveloperID int32
	PublisherID int32
	GenreID     int32
	OrderBy     OrderBy
}

GamesFilter - games filter

type Genre

type Genre struct {
	ID     int32  `db:"id"`
	Name   string `db:"name"`
	IGDBID int64  `db:"igdb_id"`
}

Genre represents genre entity

type Moderation

type Moderation struct {
	ID        int32          `db:"id"`
	GameID    int32          `db:"game_id"`
	Status    string         `db:"status"`
	Details   string         `db:"details"`
	Attempts  int32          `db:"attempts"`
	GameData  ModerationData `db:"game_data"`
	CreatedAt sql.NullTime   `db:"created_at"`
	UpdatedAt sql.NullTime   `db:"updated_at"`
}

Moderation represents stored moderation record

type ModerationData

type ModerationData struct {
	Name        string   `json:"name"`
	Developers  []string `json:"developers"`
	Publisher   string   `json:"publisher"`
	ReleaseDate string   `json:"releaseDate"`
	Genres      []string `json:"genres"`
	LogoURL     string   `json:"logoUrl"`
	Summary     string   `json:"summary"`
	Screenshots []string `json:"screenshots"`
	Websites    []string `json:"websites"`
}

ModerationData represents game data for moderation

func (*ModerationData) Scan

func (md *ModerationData) Scan(src any) error

Scan implements sql.Scanner for ModerationData

func (ModerationData) Value

func (md ModerationData) Value() (driver.Value, error)

Value implements driver.Valuer for ModerationData

type ModerationIDGameID

type ModerationIDGameID struct {
	ModerationID int32 `db:"id"`
	GameID       int32 `db:"game_id"`
}

ModerationIDGameID represents moderation record id and game id

type ModerationStatus

type ModerationStatus string

ModerationStatus represents moderation status of a game

const (
	// ModerationStatusPending represents a game that needs moderation
	ModerationStatusPending ModerationStatus = "pending"
	// ModerationStatusInProgress represents a game that is being moderated at the moment
	ModerationStatusInProgress ModerationStatus = "in_progress"
	// ModerationStatusReady represents a game that is ready
	ModerationStatusReady ModerationStatus = "ready"
	// ModerationStatusDeclined represents a game that is declined and requires fixing
	ModerationStatusDeclined ModerationStatus = "declined"
	// ModerationStatusFailed represents a game with a failed moderation
	ModerationStatusFailed ModerationStatus = "failed"
)

type OrderBy

type OrderBy struct {
	Field string
	Order SortOrder
}

OrderBy type of ordering

type Platform

type Platform struct {
	ID           int32  `db:"id"`
	Name         string `db:"name"`
	Abbreviation string `db:"abbreviation"`
	IGDBID       int64  `db:"igdb_id"`
}

Platform represents platform entity

type RemoveRating

type RemoveRating struct {
	UserID string
	GameID int32
}

RemoveRating represents data for removing game rating

type SortOrder

type SortOrder string

SortOrder - type for query sort order

const (
	AscendingSortOrder  SortOrder = "ASC"
	DescendingSortOrder SortOrder = "DESC"
)

SortOrder values

type Task

type Task struct {
	Name     string       `db:"name"`
	Status   TaskStatus   `db:"status"`
	RunCount int64        `db:"run_count"`
	LastRun  sql.NullTime `db:"last_run"`
	Settings TaskSettings `db:"settings"`
}

Task represents task entity

type TaskInfo

type TaskInfo struct {
	Schedule string
	Fn       func() error
}

TaskInfo - task info

type TaskSettings

type TaskSettings []byte

TaskSettings task settings value

func (*TaskSettings) Scan

func (ts *TaskSettings) Scan(src any) error

Scan implements sql.Scanner interface

func (TaskSettings) Value

func (ts TaskSettings) Value() (driver.Value, error)

Value implements driver.Valuer interface

type TaskStatus

type TaskStatus string

TaskStatus represents task status type

const (
	IdleTaskStatus    TaskStatus = "idle"
	RunningTaskStatus TaskStatus = "running"
	ErrorTaskStatus   TaskStatus = "error"
)

Task status values

type UpdateGame

type UpdateGame struct {
	Name         *string
	Developer    *string
	Publisher    string
	ReleaseDate  *string
	GenresIDs    *[]int32
	LogoURL      *string
	Summary      *string
	PlatformsIDs *[]int32
	Screenshots  *[]string
	Websites     *[]string
}

UpdateGame - update game fields

func (UpdateGame) MapToUpdateGameData

func (ug UpdateGame) MapToUpdateGameData(g Game, developersIDs []int32) UpdateGameData

MapToUpdateGameData maps UpdateGame and Game to UpdateGameData

type UpdateGameData

type UpdateGameData struct {
	Name             string
	DevelopersIDs    []int32
	PublishersIDs    []int32
	ReleaseDate      string
	GenresIDs        []int32
	LogoURL          string
	Summary          string
	Slug             string
	PlatformsIDs     []int32
	Screenshots      []string
	Websites         []string
	ModerationStatus ModerationStatus
}

UpdateGameData - data for updating game in db

type UpdateGameIGDBData

type UpdateGameIGDBData struct {
	Name            string
	PlatformsIDs    []int32
	Websites        []string
	IGDBRating      float64
	IGDBRatingCount int32
}

UpdateGameIGDBData - igdb data for updating game in db

type UpdateModerationResult

type UpdateModerationResult struct {
	ResultStatus ModerationStatus
	Details      string
}

UpdateModerationResult represents data to update moderation result

type UserRating

type UserRating struct {
	GameID int32  `db:"game_id"`
	UserID string `db:"user_id"`
	Rating uint8  `db:"rating"`
}

UserRating represents user rating entity

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL