feat: Add player_configs feature and migrate user preferences
- Implemented player_configs table to store multiple player configurations per user. - Migrated existing player settings from user_preferences to player_configs. - Removed player-related columns from user_preferences. - Added referral state fields to user for tracking referral rewards. - Created migration scripts for database changes and data migration. - Added test cases for app services and usage helpers. - Introduced video job service interfaces and implementations.
This commit is contained in:
38
internal/database/model/player_configs.gen.go
Normal file
38
internal/database/model/player_configs.gen.go
Normal file
@@ -0,0 +1,38 @@
|
||||
// Code generated by gorm.io/gen. DO NOT EDIT.
|
||||
// Code generated by gorm.io/gen. DO NOT EDIT.
|
||||
// Code generated by gorm.io/gen. DO NOT EDIT.
|
||||
|
||||
package model
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
const TableNamePlayerConfig = "player_configs"
|
||||
|
||||
// PlayerConfig mapped from table <player_configs>
|
||||
type PlayerConfig struct {
|
||||
ID string `gorm:"column:id;type:uuid;primaryKey;default:gen_random_uuid()" json:"id"`
|
||||
UserID string `gorm:"column:user_id;type:uuid;not null;uniqueIndex:idx_player_configs_one_default_per_user,priority:1;index:idx_player_configs_user_default,priority:2;index:idx_player_configs_user_id,priority:1" json:"user_id"`
|
||||
Name string `gorm:"column:name;type:text;not null" json:"name"`
|
||||
Description *string `gorm:"column:description;type:text" json:"description"`
|
||||
Autoplay bool `gorm:"column:autoplay;type:boolean;not null" json:"autoplay"`
|
||||
Loop bool `gorm:"column:loop;type:boolean;not null" json:"loop"`
|
||||
Muted bool `gorm:"column:muted;type:boolean;not null" json:"muted"`
|
||||
ShowControls *bool `gorm:"column:show_controls;type:boolean;not null;default:true" json:"show_controls"`
|
||||
Pip *bool `gorm:"column:pip;type:boolean;not null;default:true" json:"pip"`
|
||||
Airplay *bool `gorm:"column:airplay;type:boolean;not null;default:true" json:"airplay"`
|
||||
Chromecast *bool `gorm:"column:chromecast;type:boolean;not null;default:true" json:"chromecast"`
|
||||
IsActive *bool `gorm:"column:is_active;type:boolean;not null;default:true" json:"is_active"`
|
||||
IsDefault bool `gorm:"column:is_default;type:boolean;not null;index:idx_player_configs_is_default,priority:1;index:idx_player_configs_user_default,priority:1" json:"is_default"`
|
||||
CreatedAt *time.Time `gorm:"column:created_at;type:timestamp(3) without time zone;not null;default:CURRENT_TIMESTAMP" json:"created_at"`
|
||||
UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp(3) without time zone;not null" json:"updated_at"`
|
||||
Version *int64 `gorm:"column:version;type:bigint;not null;default:1;version" json:"-"`
|
||||
EncrytionM3u8 *bool `gorm:"column:encrytion_m3u8;type:boolean;not null;default:true" json:"encrytion_m3u8"`
|
||||
LogoURL *string `gorm:"column:logo_url;type:character varying(500)" json:"logo_url"`
|
||||
}
|
||||
|
||||
// TableName PlayerConfig's table name
|
||||
func (*PlayerConfig) TableName() string {
|
||||
return TableNamePlayerConfig
|
||||
}
|
||||
Reference in New Issue
Block a user