Documentation
¶
Overview ¶
Package repositories provides data access layer implementations.
Package repositories provides data access layer implementations.
Package repositories provides data access layer implementations.
Index ¶
- Constants
- Variables
- func MarshalState(state interface{}) (string, error)
- func NewInvitationID() string
- func UnmarshalState(jsonStr string, target interface{}) error
- type CueListRepository
- func (r *CueListRepository) CountCues(ctx context.Context, cueListID string) (int64, error)
- func (r *CueListRepository) Create(ctx context.Context, cueList *models.CueList) error
- func (r *CueListRepository) Delete(ctx context.Context, id string) error
- func (r *CueListRepository) FindByID(ctx context.Context, id string) (*models.CueList, error)
- func (r *CueListRepository) FindByProjectID(ctx context.Context, projectID string) ([]models.CueList, error)
- func (r *CueListRepository) GetCues(ctx context.Context, cueListID string) ([]models.Cue, error)
- func (r *CueListRepository) Update(ctx context.Context, cueList *models.CueList) error
- type CueRepository
- func (r *CueRepository) CountCuesByLookIDs(ctx context.Context, lookIDs []string) (int64, error)
- func (r *CueRepository) Create(ctx context.Context, cue *models.Cue) error
- func (r *CueRepository) Delete(ctx context.Context, id string) error
- func (r *CueRepository) DeleteByCueListID(ctx context.Context, cueListID string) error
- func (r *CueRepository) FindByCueListID(ctx context.Context, cueListID string) ([]models.Cue, error)
- func (r *CueRepository) FindByID(ctx context.Context, id string) (*models.Cue, error)
- func (r *CueRepository) FindCueListIDsByLookID(ctx context.Context, lookID string) ([]string, error)
- func (r *CueRepository) Update(ctx context.Context, cue *models.Cue) error
- type EffectRepository
- func (r *EffectRepository) AddChannelToEffectFixture(ctx context.Context, effectFixtureID string, channelOffset *int, ...) error
- func (r *EffectRepository) AddChannelToEffectFixtureWithScales(ctx context.Context, effectFixtureID string, channelOffset *int, ...) error
- func (r *EffectRepository) AddEffectToCue(ctx context.Context, cueID, effectID string, intensity, speed float64) error
- func (r *EffectRepository) AddFixtureToEffect(ctx context.Context, effectID, fixtureID string, ...) error
- func (r *EffectRepository) CountEffectsByCueID(ctx context.Context, cueID string) (int64, error)
- func (r *EffectRepository) CountFixtures(ctx context.Context, effectID string) (int64, error)
- func (r *EffectRepository) Create(ctx context.Context, effect *models.Effect) error
- func (r *EffectRepository) CreateWithFixtures(ctx context.Context, effect *models.Effect, fixtures []models.EffectFixture) error
- func (r *EffectRepository) Delete(ctx context.Context, id string) error
- func (r *EffectRepository) DeleteEffectChannel(ctx context.Context, channelID string) error
- func (r *EffectRepository) DeleteEffectFixtures(ctx context.Context, effectID string) error
- func (r *EffectRepository) FindByID(ctx context.Context, id string) (*models.Effect, error)
- func (r *EffectRepository) FindByProjectID(ctx context.Context, projectID string) ([]*models.Effect, error)
- func (r *EffectRepository) FindCueEffectByID(ctx context.Context, id string) (*models.CueEffect, error)
- func (r *EffectRepository) FindEffectChannelByID(ctx context.Context, id string) (*models.EffectChannel, error)
- func (r *EffectRepository) FindEffectFixtureByID(ctx context.Context, id string) (*models.EffectFixture, error)
- func (r *EffectRepository) FindEffectsByCueID(ctx context.Context, cueID string) ([]*models.CueEffect, error)
- func (r *EffectRepository) FindWithFixtures(ctx context.Context, id string) (*models.Effect, error)
- func (r *EffectRepository) GetCueEffect(ctx context.Context, cueID, effectID string) (*models.CueEffect, error)
- func (r *EffectRepository) GetEffectChannels(ctx context.Context, effectFixtureID string) ([]models.EffectChannel, error)
- func (r *EffectRepository) GetEffectFixture(ctx context.Context, effectID, fixtureID string) (*models.EffectFixture, error)
- func (r *EffectRepository) GetEffectFixtures(ctx context.Context, effectID string) ([]models.EffectFixture, error)
- func (r *EffectRepository) RemoveEffectFromCue(ctx context.Context, cueID, effectID string) error
- func (r *EffectRepository) RemoveFixtureFromEffect(ctx context.Context, effectID, fixtureID string) error
- func (r *EffectRepository) Update(ctx context.Context, effect *models.Effect) error
- func (r *EffectRepository) UpdateCueEffect(ctx context.Context, cueEffect *models.CueEffect) error
- func (r *EffectRepository) UpdateEffectChannel(ctx context.Context, channel *models.EffectChannel) error
- func (r *EffectRepository) UpdateEffectFixture(ctx context.Context, effectFixture *models.EffectFixture) error
- type FixtureGroupRepository
- func (r *FixtureGroupRepository) AddMembers(ctx context.Context, groupID string, fixtureIDs []string) error
- func (r *FixtureGroupRepository) AssignAndPersistMissingEosNumbers(ctx context.Context, projectID string, groups []models.FixtureGroup) error
- func (r *FixtureGroupRepository) AssignNextEosNumber(ctx context.Context, projectID string) (int, error)
- func (r *FixtureGroupRepository) Create(ctx context.Context, g *models.FixtureGroup) error
- func (r *FixtureGroupRepository) CreateWithMembers(ctx context.Context, g *models.FixtureGroup, fixtureIDs []string) error
- func (r *FixtureGroupRepository) Delete(ctx context.Context, id string) error
- func (r *FixtureGroupRepository) FindByEosNumber(ctx context.Context, projectID string, eosNumber int) (*models.FixtureGroup, error)
- func (r *FixtureGroupRepository) FindByID(ctx context.Context, id string) (*models.FixtureGroup, error)
- func (r *FixtureGroupRepository) FindByProjectID(ctx context.Context, projectID string) ([]models.FixtureGroup, error)
- func (r *FixtureGroupRepository) FindByRefID(ctx context.Context, projectID, refID string) (*models.FixtureGroup, error)
- func (r *FixtureGroupRepository) GetMembers(ctx context.Context, groupID string) ([]models.FixtureGroupMember, error)
- func (r *FixtureGroupRepository) GetMembersByGroupIDs(ctx context.Context, groupIDs []string) (map[string][]models.FixtureGroupMember, error)
- func (r *FixtureGroupRepository) RemoveMembers(ctx context.Context, groupID string, fixtureIDs []string) error
- func (r *FixtureGroupRepository) ReorderMembers(ctx context.Context, groupID string, fixtureIDs []string) error
- func (r *FixtureGroupRepository) SetMembers(ctx context.Context, groupID string, fixtureIDs []string) error
- func (r *FixtureGroupRepository) Update(ctx context.Context, g *models.FixtureGroup) error
- type FixtureRepository
- func (r *FixtureRepository) CountDefinitions(ctx context.Context) (int64, error)
- func (r *FixtureRepository) CountInstancesByDefinitionID(ctx context.Context, definitionID string) (int64, error)
- func (r *FixtureRepository) Create(ctx context.Context, fixture *models.FixtureInstance) error
- func (r *FixtureRepository) CreateChannelDefinition(ctx context.Context, channel *models.ChannelDefinition) error
- func (r *FixtureRepository) CreateChannelDefinitions(ctx context.Context, channels []models.ChannelDefinition) error
- func (r *FixtureRepository) CreateDefinition(ctx context.Context, definition *models.FixtureDefinition) error
- func (r *FixtureRepository) CreateDefinitionWithChannels(ctx context.Context, definition *models.FixtureDefinition, ...) error
- func (r *FixtureRepository) CreateInstanceChannels(ctx context.Context, channels []models.InstanceChannel) error
- func (r *FixtureRepository) CreateMode(ctx context.Context, mode *models.FixtureMode) error
- func (r *FixtureRepository) CreateModeChannels(ctx context.Context, modeChannels []models.ModeChannel) error
- func (r *FixtureRepository) CreateWithChannels(ctx context.Context, fixture *models.FixtureInstance, ...) error
- func (r *FixtureRepository) Delete(ctx context.Context, id string) error
- func (r *FixtureRepository) DeleteChannelDefinitions(ctx context.Context, definitionID string) error
- func (r *FixtureRepository) DeleteDefinition(ctx context.Context, id string) error
- func (r *FixtureRepository) DeleteDefinitionModes(ctx context.Context, definitionID string) error
- func (r *FixtureRepository) DeleteInstanceChannels(ctx context.Context, fixtureID string) error
- func (r *FixtureRepository) FindAllDefinitions(ctx context.Context) ([]models.FixtureDefinition, error)
- func (r *FixtureRepository) FindByID(ctx context.Context, id string) (*models.FixtureInstance, error)
- func (r *FixtureRepository) FindByIDs(ctx context.Context, ids []string) ([]models.FixtureInstance, error)
- func (r *FixtureRepository) FindByProjectID(ctx context.Context, projectID string) ([]models.FixtureInstance, error)
- func (r *FixtureRepository) FindDefinitionByID(ctx context.Context, id string) (*models.FixtureDefinition, error)
- func (r *FixtureRepository) FindDefinitionByManufacturerModel(ctx context.Context, manufacturer, model string) (*models.FixtureDefinition, error)
- func (r *FixtureRepository) FindDefinitionByRefID(ctx context.Context, refID string) (*models.FixtureDefinition, error)
- func (r *FixtureRepository) FindInstanceByRefID(ctx context.Context, projectID, refID string) (*models.FixtureInstance, error)
- func (r *FixtureRepository) FindModeByID(ctx context.Context, id string) (*models.FixtureMode, error)
- func (r *FixtureRepository) GetChannelDefinitionByID(ctx context.Context, id string) (*models.ChannelDefinition, error)
- func (r *FixtureRepository) GetDefinitionChannels(ctx context.Context, definitionID string) ([]models.ChannelDefinition, error)
- func (r *FixtureRepository) GetDefinitionModes(ctx context.Context, definitionID string) ([]models.FixtureMode, error)
- func (r *FixtureRepository) GetInstanceChannels(ctx context.Context, fixtureID string) ([]models.InstanceChannel, error)
- func (r *FixtureRepository) GetInstanceChannelsByFixtureIDs(ctx context.Context, fixtureIDs []string) (map[string][]models.InstanceChannel, error)
- func (r *FixtureRepository) GetModeChannels(ctx context.Context, modeID string) ([]models.ModeChannel, error)
- func (r *FixtureRepository) Update(ctx context.Context, fixture *models.FixtureInstance) error
- func (r *FixtureRepository) UpdateDefinition(ctx context.Context, definition *models.FixtureDefinition) error
- func (r *FixtureRepository) UpdateInstanceChannelFadeBehavior(ctx context.Context, instanceID string, offset int, behavior string) error
- type GroupInvitationInput
- type GroupRepository
- func (r *GroupRepository) AddDeviceToGroup(ctx context.Context, deviceID, groupID string) (*models.DeviceGroupMember, error)
- func (r *GroupRepository) AddMember(ctx context.Context, userID, groupID, role string) (*models.UserGroupMember, error)
- func (r *GroupRepository) FindDeviceByID(ctx context.Context, id string) (*models.Device, error)
- func (r *GroupRepository) FindDeviceGroupMember(ctx context.Context, deviceID, groupID string) (*models.DeviceGroupMember, error)
- func (r *GroupRepository) FindGroupByID(ctx context.Context, id string) (*models.UserGroup, error)
- func (r *GroupRepository) FindMember(ctx context.Context, userID, groupID string) (*models.UserGroupMember, error)
- func (r *GroupRepository) FindUserByEmail(ctx context.Context, email string) (*models.User, error)
- func (r *GroupRepository) RemoveDeviceFromGroup(ctx context.Context, deviceID, groupID string) (bool, error)
- func (r *GroupRepository) RemoveMember(ctx context.Context, userID, groupID string) (bool, error)
- func (r *GroupRepository) UpdateMemberRole(ctx context.Context, userID, groupID, role string) error
- type InvitationRepository
- func (r *InvitationRepository) Create(ctx context.Context, groupID, email, invitedByID, role string, ...) (*models.GroupInvitation, error)
- func (r *InvitationRepository) CreateWithDefaults(ctx context.Context, input GroupInvitationInput) (*models.GroupInvitation, error)
- func (r *InvitationRepository) DB() *gorm.DB
- func (r *InvitationRepository) ExpireOverdueInvitations(ctx context.Context) (int64, error)
- func (r *InvitationRepository) FindByGroupID(ctx context.Context, groupID string) ([]models.GroupInvitation, error)
- func (r *InvitationRepository) FindByID(ctx context.Context, id string) (*models.GroupInvitation, error)
- func (r *InvitationRepository) FindByIDForUpdate(tx *gorm.DB, id string) (*models.GroupInvitation, error)
- func (r *InvitationRepository) FindPendingByEmail(ctx context.Context, email string) ([]models.GroupInvitation, error)
- func (r *InvitationRepository) FindPendingByGroupAndEmail(ctx context.Context, groupID, email string) (*models.GroupInvitation, error)
- func (r *InvitationRepository) UpdateStatus(ctx context.Context, id, status string, acceptedAt *time.Time) error
- type LookBoardRepository
- func (r *LookBoardRepository) Create(ctx context.Context, board *models.LookBoard) error
- func (r *LookBoardRepository) CreateButton(ctx context.Context, button *models.LookBoardButton) error
- func (r *LookBoardRepository) CreateButtons(ctx context.Context, buttons []models.LookBoardButton) error
- func (r *LookBoardRepository) CreateWithButtons(ctx context.Context, board *models.LookBoard, buttons []models.LookBoardButton) error
- func (r *LookBoardRepository) Delete(ctx context.Context, id string) error
- func (r *LookBoardRepository) DeleteButton(ctx context.Context, id string) error
- func (r *LookBoardRepository) DeleteButtons(ctx context.Context, boardID string) error
- func (r *LookBoardRepository) FindButtonByID(ctx context.Context, id string) (*models.LookBoardButton, error)
- func (r *LookBoardRepository) FindByID(ctx context.Context, id string) (*models.LookBoard, error)
- func (r *LookBoardRepository) FindByProjectID(ctx context.Context, projectID string) ([]models.LookBoard, error)
- func (r *LookBoardRepository) FindByRefID(ctx context.Context, projectID, refID string) (*models.LookBoard, error)
- func (r *LookBoardRepository) GetButtons(ctx context.Context, boardID string) ([]models.LookBoardButton, error)
- func (r *LookBoardRepository) ReplaceButtons(ctx context.Context, board *models.LookBoard, buttons []models.LookBoardButton) error
- func (r *LookBoardRepository) Update(ctx context.Context, board *models.LookBoard) error
- func (r *LookBoardRepository) UpdateButton(ctx context.Context, button *models.LookBoardButton) error
- type LookRepository
- func (r *LookRepository) CountFixtures(ctx context.Context, lookID string) (int64, error)
- func (r *LookRepository) Create(ctx context.Context, look *models.Look) error
- func (r *LookRepository) CreateFixtureValue(ctx context.Context, value *models.FixtureValue) error
- func (r *LookRepository) CreateFixtureValues(ctx context.Context, values []models.FixtureValue) error
- func (r *LookRepository) CreateWithFixtureValues(ctx context.Context, look *models.Look, fixtureValues []models.FixtureValue) error
- func (r *LookRepository) Delete(ctx context.Context, id string) error
- func (r *LookRepository) DeleteFixtureValue(ctx context.Context, lookID, fixtureID string) error
- func (r *LookRepository) DeleteFixtureValues(ctx context.Context, lookID string) error
- func (r *LookRepository) DeleteFixtureValuesByFixtureID(ctx context.Context, fixtureID string) error
- func (r *LookRepository) FindByID(ctx context.Context, id string) (*models.Look, error)
- func (r *LookRepository) FindByIDs(ctx context.Context, ids []string) ([]models.Look, error)
- func (r *LookRepository) FindByProjectID(ctx context.Context, projectID string) ([]models.Look, error)
- func (r *LookRepository) FindByRefID(ctx context.Context, projectID, refID string) (*models.Look, error)
- func (r *LookRepository) GetFixtureValue(ctx context.Context, lookID, fixtureID string) (*models.FixtureValue, error)
- func (r *LookRepository) GetFixtureValues(ctx context.Context, lookID string) ([]models.FixtureValue, error)
- func (r *LookRepository) MapByRefID(ctx context.Context, projectID string, refIDs []string) (map[string]string, error)
- func (r *LookRepository) Update(ctx context.Context, look *models.Look) error
- func (r *LookRepository) UpdateAndReplaceFixtureValues(ctx context.Context, look *models.Look, values []models.FixtureValue) error
- func (r *LookRepository) UpdateFixtureValue(ctx context.Context, value *models.FixtureValue) error
- type OperationRepository
- func (r *OperationRepository) ClearHistory(ctx context.Context, projectID string) error
- func (r *OperationRepository) ConfirmRedo(ctx context.Context, projectID string) error
- func (r *OperationRepository) ConfirmUndo(ctx context.Context, projectID string) error
- func (r *OperationRepository) DeleteByProjectID(ctx context.Context, projectID string) error
- func (r *OperationRepository) GetOperationAtSequence(ctx context.Context, projectID string, seq int) (*models.Operation, error)
- func (r *OperationRepository) GetOperationByID(ctx context.Context, operationID string) (*models.Operation, error)
- func (r *OperationRepository) GetOperationForRedo(ctx context.Context, projectID string) (*models.Operation, error)
- func (r *OperationRepository) GetOperationForUndo(ctx context.Context, projectID string) (*models.Operation, error)
- func (r *OperationRepository) GetOperationsByProject(ctx context.Context, projectID string, page, perPage int) ([]models.Operation, int64, error)
- func (r *OperationRepository) GetPointer(ctx context.Context, projectID string) (*models.OperationPointer, error)
- func (r *OperationRepository) GetUndoRedoStatus(ctx context.Context, projectID string) (*UndoRedoStatus, error)
- func (r *OperationRepository) RecordOperation(ctx context.Context, op *models.Operation) error
- func (r *OperationRepository) Redo(ctx context.Context, projectID string) (*models.Operation, error)
- func (r *OperationRepository) TruncateAfterSequence(ctx context.Context, projectID string, sequence int) error
- func (r *OperationRepository) Undo(ctx context.Context, projectID string) (*models.Operation, error)
- func (r *OperationRepository) UpdatePointer(ctx context.Context, projectID string, newSequence int) error
- type ProjectRepository
- func (r *ProjectRepository) CountCueLists(ctx context.Context, projectID string) (int64, error)
- func (r *ProjectRepository) CountFixtures(ctx context.Context, projectID string) (int64, error)
- func (r *ProjectRepository) CountLooks(ctx context.Context, projectID string) (int64, error)
- func (r *ProjectRepository) Create(ctx context.Context, project *models.Project) error
- func (r *ProjectRepository) Delete(ctx context.Context, id string) error
- func (r *ProjectRepository) FindAll(ctx context.Context) ([]models.Project, error)
- func (r *ProjectRepository) FindAllByGroupIDs(ctx context.Context, groupIDs []string) ([]models.Project, error)
- func (r *ProjectRepository) FindAllDeleted(ctx context.Context) ([]models.Project, error)
- func (r *ProjectRepository) FindByID(ctx context.Context, id string) (*models.Project, error)
- func (r *ProjectRepository) FindByIDIncludingDeleted(ctx context.Context, id string) (*models.Project, error)
- func (r *ProjectRepository) FindByIDWithGroupCheck(ctx context.Context, id string, groupIDs []string) (*models.Project, error)
- func (r *ProjectRepository) PermanentDelete(ctx context.Context, id string) error
- func (r *ProjectRepository) Restore(ctx context.Context, id string) error
- func (r *ProjectRepository) Update(ctx context.Context, project *models.Project) error
- type SettingRepository
- func (r *SettingRepository) Delete(ctx context.Context, key string) error
- func (r *SettingRepository) FindAll(ctx context.Context) ([]models.Setting, error)
- func (r *SettingRepository) FindByKey(ctx context.Context, key string) (*models.Setting, error)
- func (r *SettingRepository) Upsert(ctx context.Context, key, value string) (*models.Setting, error)
- type UndoRedoStatus
Constants ¶
const DefaultMaxHistoryPerProject = 100
DefaultMaxHistoryPerProject is the default maximum number of operations to keep per project.
Variables ¶
var ErrChannelOffsetNotFound = errors.New("instance channel offset not found")
ErrChannelOffsetNotFound is returned by UpdateInstanceChannelFadeBehavior when the targeted offset doesn't exist on the instance. Mappers convert it to a SIDECAR_UNRESOLVED warning rather than failing the import.
Functions ¶
func MarshalState ¶ added in v0.2.30
Helper to marshal state to JSON string
func NewInvitationID ¶ added in v0.2.31
func NewInvitationID() string
NewInvitationID generates a new invitation ID.
func UnmarshalState ¶ added in v0.2.30
Helper to unmarshal state from JSON string
Types ¶
type CueListRepository ¶
type CueListRepository struct {
// contains filtered or unexported fields
}
CueListRepository handles cue list data access.
func NewCueListRepository ¶
func NewCueListRepository(db *gorm.DB) *CueListRepository
NewCueListRepository creates a new CueListRepository.
func (*CueListRepository) Delete ¶
func (r *CueListRepository) Delete(ctx context.Context, id string) error
Delete deletes a cue list by ID.
func (*CueListRepository) FindByProjectID ¶
func (r *CueListRepository) FindByProjectID(ctx context.Context, projectID string) ([]models.CueList, error)
FindByProjectID returns all cue lists in a project.
type CueRepository ¶
type CueRepository struct {
// contains filtered or unexported fields
}
CueRepository handles cue data access.
func NewCueRepository ¶
func NewCueRepository(db *gorm.DB) *CueRepository
NewCueRepository creates a new CueRepository.
func (*CueRepository) CountCuesByLookIDs ¶ added in v0.2.30
CountCuesByLookIDs returns the total number of cues using any of the given look IDs.
func (*CueRepository) Delete ¶
func (r *CueRepository) Delete(ctx context.Context, id string) error
Delete deletes a cue by ID.
func (*CueRepository) DeleteByCueListID ¶
func (r *CueRepository) DeleteByCueListID(ctx context.Context, cueListID string) error
DeleteByCueListID deletes all cues in a cue list.
func (*CueRepository) FindByCueListID ¶
func (r *CueRepository) FindByCueListID(ctx context.Context, cueListID string) ([]models.Cue, error)
FindByCueListID returns all cues in a cue list ordered by cue number.
func (*CueRepository) FindCueListIDsByLookID ¶ added in v0.2.30
func (r *CueRepository) FindCueListIDsByLookID(ctx context.Context, lookID string) ([]string, error)
FindCueListIDsByLookID returns all unique cue list IDs that have cues using the given look.
type EffectRepository ¶ added in v0.2.30
type EffectRepository struct {
// contains filtered or unexported fields
}
EffectRepository handles effect data access.
func NewEffectRepository ¶ added in v0.2.30
func NewEffectRepository(db *gorm.DB) *EffectRepository
NewEffectRepository creates a new EffectRepository.
func (*EffectRepository) AddChannelToEffectFixture ¶ added in v0.2.30
func (r *EffectRepository) AddChannelToEffectFixture(ctx context.Context, effectFixtureID string, channelOffset *int, channelType *string) error
AddChannelToEffectFixture adds a channel override to an effect fixture.
func (*EffectRepository) AddChannelToEffectFixtureWithScales ¶ added in v0.2.30
func (r *EffectRepository) AddChannelToEffectFixtureWithScales(ctx context.Context, effectFixtureID string, channelOffset *int, channelType *string, amplitudeScale, frequencyScale *float64) error
AddChannelToEffectFixtureWithScales adds a channel override with amplitude and frequency scales.
func (*EffectRepository) AddEffectToCue ¶ added in v0.2.30
func (r *EffectRepository) AddEffectToCue(ctx context.Context, cueID, effectID string, intensity, speed float64) error
AddEffectToCue adds an effect to a cue with specified intensity and speed.
func (*EffectRepository) AddFixtureToEffect ¶ added in v0.2.30
func (r *EffectRepository) AddFixtureToEffect(ctx context.Context, effectID, fixtureID string, phaseOffset, amplitudeScale *float64) error
AddFixtureToEffect adds a fixture to an effect with optional phase offset and amplitude scale.
func (*EffectRepository) CountEffectsByCueID ¶ added in v0.2.30
CountEffectsByCueID returns the number of effects attached to a cue.
func (*EffectRepository) CountFixtures ¶ added in v0.2.30
CountFixtures returns the number of fixtures in an effect.
func (*EffectRepository) CreateWithFixtures ¶ added in v0.2.30
func (r *EffectRepository) CreateWithFixtures(ctx context.Context, effect *models.Effect, fixtures []models.EffectFixture) error
CreateWithFixtures creates an effect with its fixtures in a transaction.
func (*EffectRepository) Delete ¶ added in v0.2.30
func (r *EffectRepository) Delete(ctx context.Context, id string) error
Delete deletes an effect by ID. This cascades to delete associated EffectFixtures and EffectChannels.
func (*EffectRepository) DeleteEffectChannel ¶ added in v0.2.30
func (r *EffectRepository) DeleteEffectChannel(ctx context.Context, channelID string) error
DeleteEffectChannel deletes an effect channel by ID.
func (*EffectRepository) DeleteEffectFixtures ¶ added in v0.2.30
func (r *EffectRepository) DeleteEffectFixtures(ctx context.Context, effectID string) error
DeleteEffectFixtures deletes all fixtures for an effect.
func (*EffectRepository) FindByProjectID ¶ added in v0.2.30
func (r *EffectRepository) FindByProjectID(ctx context.Context, projectID string) ([]*models.Effect, error)
FindByProjectID returns all effects in a project.
func (*EffectRepository) FindCueEffectByID ¶ added in v0.2.30
func (r *EffectRepository) FindCueEffectByID(ctx context.Context, id string) (*models.CueEffect, error)
FindCueEffectByID returns a cue effect by its ID.
func (*EffectRepository) FindEffectChannelByID ¶ added in v0.2.30
func (r *EffectRepository) FindEffectChannelByID(ctx context.Context, id string) (*models.EffectChannel, error)
FindEffectChannelByID returns an effect channel by its ID.
func (*EffectRepository) FindEffectFixtureByID ¶ added in v0.2.30
func (r *EffectRepository) FindEffectFixtureByID(ctx context.Context, id string) (*models.EffectFixture, error)
FindEffectFixtureByID returns an effect fixture by its ID.
func (*EffectRepository) FindEffectsByCueID ¶ added in v0.2.30
func (r *EffectRepository) FindEffectsByCueID(ctx context.Context, cueID string) ([]*models.CueEffect, error)
FindEffectsByCueID returns all effects attached to a cue.
func (*EffectRepository) FindWithFixtures ¶ added in v0.2.30
FindWithFixtures returns an effect with its fixtures and channels preloaded.
func (*EffectRepository) GetCueEffect ¶ added in v0.2.30
func (r *EffectRepository) GetCueEffect(ctx context.Context, cueID, effectID string) (*models.CueEffect, error)
GetCueEffect returns a specific cue-effect relationship.
func (*EffectRepository) GetEffectChannels ¶ added in v0.2.30
func (r *EffectRepository) GetEffectChannels(ctx context.Context, effectFixtureID string) ([]models.EffectChannel, error)
GetEffectChannels returns all channels for an effect fixture.
func (*EffectRepository) GetEffectFixture ¶ added in v0.2.30
func (r *EffectRepository) GetEffectFixture(ctx context.Context, effectID, fixtureID string) (*models.EffectFixture, error)
GetEffectFixture returns a specific effect-fixture relationship.
func (*EffectRepository) GetEffectFixtures ¶ added in v0.2.30
func (r *EffectRepository) GetEffectFixtures(ctx context.Context, effectID string) ([]models.EffectFixture, error)
GetEffectFixtures returns all fixtures for an effect.
func (*EffectRepository) RemoveEffectFromCue ¶ added in v0.2.30
func (r *EffectRepository) RemoveEffectFromCue(ctx context.Context, cueID, effectID string) error
RemoveEffectFromCue removes an effect from a cue.
func (*EffectRepository) RemoveFixtureFromEffect ¶ added in v0.2.30
func (r *EffectRepository) RemoveFixtureFromEffect(ctx context.Context, effectID, fixtureID string) error
RemoveFixtureFromEffect removes a fixture from an effect. This also deletes associated EffectChannels.
func (*EffectRepository) UpdateCueEffect ¶ added in v0.2.30
UpdateCueEffect updates an existing cue-effect relationship.
func (*EffectRepository) UpdateEffectChannel ¶ added in v0.2.30
func (r *EffectRepository) UpdateEffectChannel(ctx context.Context, channel *models.EffectChannel) error
UpdateEffectChannel updates an existing effect channel.
func (*EffectRepository) UpdateEffectFixture ¶ added in v0.2.30
func (r *EffectRepository) UpdateEffectFixture(ctx context.Context, effectFixture *models.EffectFixture) error
UpdateEffectFixture updates an existing effect-fixture relationship.
type FixtureGroupRepository ¶ added in v0.3.0
type FixtureGroupRepository struct {
// contains filtered or unexported fields
}
FixtureGroupRepository handles fixture-group data access.
func NewFixtureGroupRepository ¶ added in v0.3.0
func NewFixtureGroupRepository(db *gorm.DB) *FixtureGroupRepository
NewFixtureGroupRepository creates a new FixtureGroupRepository.
func (*FixtureGroupRepository) AddMembers ¶ added in v0.3.0
func (r *FixtureGroupRepository) AddMembers(ctx context.Context, groupID string, fixtureIDs []string) error
AddMembers appends the given fixtures to the group, skipping duplicates. New rows get OrderIndex = current max + 1, +2, ...
func (*FixtureGroupRepository) AssignAndPersistMissingEosNumbers ¶ added in v0.3.0
func (r *FixtureGroupRepository) AssignAndPersistMissingEosNumbers(ctx context.Context, projectID string, groups []models.FixtureGroup) error
AssignAndPersistMissingEosNumbers fills in EosNumber for any group in the supplied slice that has nil EosNumber, persisting each new value in a single transaction. Mutates the in-memory groups so callers see the assigned numbers without re-reading.
Concurrency: SQLite's deferred transactions don't serialize the initial MAX(eos_number) read against parallel writers, so two concurrent exporters can theoretically both pick the same next number and one will fail the (project_id, eos_number) partial unique index. In practice this is vanishingly unlikely (export is a user-initiated action; nobody fires two exports of the same project concurrently). If it does happen, the constraint violation surfaces as an export error and the user re-runs — the second run succeeds because the first run's numbers are now persisted.
func (*FixtureGroupRepository) AssignNextEosNumber ¶ added in v0.3.0
func (r *FixtureGroupRepository) AssignNextEosNumber(ctx context.Context, projectID string) (int, error)
AssignNextEosNumber returns one more than the largest EosNumber in the project, or 1 if no group has an assigned number. It does NOT mutate state — callers persist via Update.
Concurrency: not safe — two parallel callers will compute the same number. For atomic batch assignment use AssignAndPersistMissingEosNumbers instead.
func (*FixtureGroupRepository) Create ¶ added in v0.3.0
func (r *FixtureGroupRepository) Create(ctx context.Context, g *models.FixtureGroup) error
Create creates a new fixture group (no members).
func (*FixtureGroupRepository) CreateWithMembers ¶ added in v0.3.0
func (r *FixtureGroupRepository) CreateWithMembers(ctx context.Context, g *models.FixtureGroup, fixtureIDs []string) error
CreateWithMembers atomically creates a group and its members.
func (*FixtureGroupRepository) Delete ¶ added in v0.3.0
func (r *FixtureGroupRepository) Delete(ctx context.Context, id string) error
Delete deletes a group; cascade FK on members removes their rows.
func (*FixtureGroupRepository) FindByEosNumber ¶ added in v0.3.0
func (r *FixtureGroupRepository) FindByEosNumber(ctx context.Context, projectID string, eosNumber int) (*models.FixtureGroup, error)
FindByEosNumber resolves a group by (project, eosNumber).
func (*FixtureGroupRepository) FindByID ¶ added in v0.3.0
func (r *FixtureGroupRepository) FindByID(ctx context.Context, id string) (*models.FixtureGroup, error)
FindByID returns a group by primary key. (nil, nil) on miss.
func (*FixtureGroupRepository) FindByProjectID ¶ added in v0.3.0
func (r *FixtureGroupRepository) FindByProjectID(ctx context.Context, projectID string) ([]models.FixtureGroup, error)
FindByProjectID returns all groups in a project, sorted by ProjectOrder (NULL last) then Name.
func (*FixtureGroupRepository) FindByRefID ¶ added in v0.3.0
func (r *FixtureGroupRepository) FindByRefID(ctx context.Context, projectID, refID string) (*models.FixtureGroup, error)
FindByRefID resolves a group by (project, refID).
func (*FixtureGroupRepository) GetMembers ¶ added in v0.3.0
func (r *FixtureGroupRepository) GetMembers(ctx context.Context, groupID string) ([]models.FixtureGroupMember, error)
GetMembers returns the members of a group sorted by OrderIndex.
func (*FixtureGroupRepository) GetMembersByGroupIDs ¶ added in v0.3.0
func (r *FixtureGroupRepository) GetMembersByGroupIDs(ctx context.Context, groupIDs []string) (map[string][]models.FixtureGroupMember, error)
GetMembersByGroupIDs batches GetMembers into a single SELECT … WHERE group_id IN (…). Returns a map keyed by group ID with each value sorted by OrderIndex ASC. Used by the EOS exporter to avoid an O(groups) round-trip pattern. Empty input returns an empty map without a query.
func (*FixtureGroupRepository) RemoveMembers ¶ added in v0.3.0
func (r *FixtureGroupRepository) RemoveMembers(ctx context.Context, groupID string, fixtureIDs []string) error
RemoveMembers deletes the listed fixtures from the group; missing IDs are silently ignored. Surviving members keep their OrderIndex.
func (*FixtureGroupRepository) ReorderMembers ¶ added in v0.3.0
func (r *FixtureGroupRepository) ReorderMembers(ctx context.Context, groupID string, fixtureIDs []string) error
ReorderMembers updates OrderIndex according to the supplied list. Any fixtureIDs not currently members are silently ignored. Any current members not listed retain their existing OrderIndex.
func (*FixtureGroupRepository) SetMembers ¶ added in v0.3.0
func (r *FixtureGroupRepository) SetMembers(ctx context.Context, groupID string, fixtureIDs []string) error
SetMembers transactionally replaces the membership list. OrderIndex is assigned in input-list order (0, 1, 2, ...).
func (*FixtureGroupRepository) Update ¶ added in v0.3.0
func (r *FixtureGroupRepository) Update(ctx context.Context, g *models.FixtureGroup) error
Update saves a group's mutable fields (name, description, eos_number, project_order). RefID is intentionally not part of the update set — it's frozen post-creation.
type FixtureRepository ¶
type FixtureRepository struct {
// contains filtered or unexported fields
}
FixtureRepository handles fixture data access.
func NewFixtureRepository ¶
func NewFixtureRepository(db *gorm.DB) *FixtureRepository
NewFixtureRepository creates a new FixtureRepository.
func (*FixtureRepository) CountDefinitions ¶ added in v0.2.0
func (r *FixtureRepository) CountDefinitions(ctx context.Context) (int64, error)
CountDefinitions returns the total count of fixture definitions in the database.
func (*FixtureRepository) CountInstancesByDefinitionID ¶
func (r *FixtureRepository) CountInstancesByDefinitionID(ctx context.Context, definitionID string) (int64, error)
CountInstancesByDefinitionID returns the count of fixture instances using a definition.
func (*FixtureRepository) Create ¶
func (r *FixtureRepository) Create(ctx context.Context, fixture *models.FixtureInstance) error
Create creates a new fixture instance.
func (*FixtureRepository) CreateChannelDefinition ¶
func (r *FixtureRepository) CreateChannelDefinition(ctx context.Context, channel *models.ChannelDefinition) error
CreateChannelDefinition creates a new channel definition.
func (*FixtureRepository) CreateChannelDefinitions ¶
func (r *FixtureRepository) CreateChannelDefinitions(ctx context.Context, channels []models.ChannelDefinition) error
CreateChannelDefinitions creates multiple channel definitions.
func (*FixtureRepository) CreateDefinition ¶
func (r *FixtureRepository) CreateDefinition(ctx context.Context, definition *models.FixtureDefinition) error
CreateDefinition creates a new fixture definition.
func (*FixtureRepository) CreateDefinitionWithChannels ¶
func (r *FixtureRepository) CreateDefinitionWithChannels(ctx context.Context, definition *models.FixtureDefinition, channels []models.ChannelDefinition) error
CreateDefinitionWithChannels creates a fixture definition with its channels in a transaction.
func (*FixtureRepository) CreateInstanceChannels ¶
func (r *FixtureRepository) CreateInstanceChannels(ctx context.Context, channels []models.InstanceChannel) error
CreateInstanceChannels creates instance channels for a fixture.
func (*FixtureRepository) CreateMode ¶ added in v0.2.1
func (r *FixtureRepository) CreateMode(ctx context.Context, mode *models.FixtureMode) error
CreateMode creates a new fixture mode.
func (*FixtureRepository) CreateModeChannels ¶ added in v0.2.1
func (r *FixtureRepository) CreateModeChannels(ctx context.Context, modeChannels []models.ModeChannel) error
CreateModeChannels creates multiple mode channels.
func (*FixtureRepository) CreateWithChannels ¶
func (r *FixtureRepository) CreateWithChannels(ctx context.Context, fixture *models.FixtureInstance, channels []models.InstanceChannel) error
CreateWithChannels creates a fixture instance with its channels in a transaction.
func (*FixtureRepository) Delete ¶
func (r *FixtureRepository) Delete(ctx context.Context, id string) error
Delete deletes a fixture instance by ID, also removing any FixtureGroupMember rows that reference it (cascade-on-fixture-delete). GORM's tag-based cascade on a composite-PK junction is unreliable, so we do this explicitly in a transaction.
func (*FixtureRepository) DeleteChannelDefinitions ¶
func (r *FixtureRepository) DeleteChannelDefinitions(ctx context.Context, definitionID string) error
DeleteChannelDefinitions deletes all channel definitions for a fixture definition.
func (*FixtureRepository) DeleteDefinition ¶
func (r *FixtureRepository) DeleteDefinition(ctx context.Context, id string) error
DeleteDefinition deletes a fixture definition by ID.
func (*FixtureRepository) DeleteDefinitionModes ¶ added in v0.2.1
func (r *FixtureRepository) DeleteDefinitionModes(ctx context.Context, definitionID string) error
DeleteDefinitionModes deletes all modes for a fixture definition.
func (*FixtureRepository) DeleteInstanceChannels ¶
func (r *FixtureRepository) DeleteInstanceChannels(ctx context.Context, fixtureID string) error
DeleteInstanceChannels deletes all instance channels for a fixture.
func (*FixtureRepository) FindAllDefinitions ¶
func (r *FixtureRepository) FindAllDefinitions(ctx context.Context) ([]models.FixtureDefinition, error)
FindAllDefinitions returns all fixture definitions.
func (*FixtureRepository) FindByID ¶
func (r *FixtureRepository) FindByID(ctx context.Context, id string) (*models.FixtureInstance, error)
FindByID returns a fixture by ID.
func (*FixtureRepository) FindByIDs ¶ added in v0.3.0
func (r *FixtureRepository) FindByIDs(ctx context.Context, ids []string) ([]models.FixtureInstance, error)
FindByIDs batches FindByID into a single SELECT … WHERE id IN (…). Returns rows in arbitrary order; callers that need a specific order should index the result by ID. Empty input returns an empty slice without a query.
func (*FixtureRepository) FindByProjectID ¶
func (r *FixtureRepository) FindByProjectID(ctx context.Context, projectID string) ([]models.FixtureInstance, error)
FindByProjectID returns all fixtures in a project.
func (*FixtureRepository) FindDefinitionByID ¶
func (r *FixtureRepository) FindDefinitionByID(ctx context.Context, id string) (*models.FixtureDefinition, error)
FindDefinitionByID returns a fixture definition by ID.
func (*FixtureRepository) FindDefinitionByManufacturerModel ¶
func (r *FixtureRepository) FindDefinitionByManufacturerModel(ctx context.Context, manufacturer, model string) (*models.FixtureDefinition, error)
FindDefinitionByManufacturerModel returns a fixture definition by manufacturer and model.
func (*FixtureRepository) FindDefinitionByRefID ¶ added in v0.3.0
func (r *FixtureRepository) FindDefinitionByRefID(ctx context.Context, refID string) (*models.FixtureDefinition, error)
FindDefinitionByRefID resolves a fixture definition by refID. Returns (nil, nil) on miss.
func (*FixtureRepository) FindInstanceByRefID ¶ added in v0.3.0
func (r *FixtureRepository) FindInstanceByRefID(ctx context.Context, projectID, refID string) (*models.FixtureInstance, error)
FindInstanceByRefID resolves a fixture instance by (project, refID). Returns (nil, nil) on miss — convention shared with FindByID.
func (*FixtureRepository) FindModeByID ¶
func (r *FixtureRepository) FindModeByID(ctx context.Context, id string) (*models.FixtureMode, error)
FindModeByID returns a fixture mode by ID.
func (*FixtureRepository) GetChannelDefinitionByID ¶
func (r *FixtureRepository) GetChannelDefinitionByID(ctx context.Context, id string) (*models.ChannelDefinition, error)
GetChannelDefinitionByID returns a channel definition by ID.
func (*FixtureRepository) GetDefinitionChannels ¶
func (r *FixtureRepository) GetDefinitionChannels(ctx context.Context, definitionID string) ([]models.ChannelDefinition, error)
GetDefinitionChannels returns all channels for a fixture definition.
func (*FixtureRepository) GetDefinitionModes ¶ added in v0.2.1
func (r *FixtureRepository) GetDefinitionModes(ctx context.Context, definitionID string) ([]models.FixtureMode, error)
GetDefinitionModes returns all modes for a fixture definition.
func (*FixtureRepository) GetInstanceChannels ¶
func (r *FixtureRepository) GetInstanceChannels(ctx context.Context, fixtureID string) ([]models.InstanceChannel, error)
GetInstanceChannels returns all channels for a fixture instance.
func (*FixtureRepository) GetInstanceChannelsByFixtureIDs ¶ added in v0.3.0
func (r *FixtureRepository) GetInstanceChannelsByFixtureIDs(ctx context.Context, fixtureIDs []string) (map[string][]models.InstanceChannel, error)
GetInstanceChannelsByFixtureIDs batches GetInstanceChannels into a single SELECT … WHERE fixture_id IN (…). Returns a map keyed by fixture ID with each value sorted by Offset ASC. Used by the EOS exporter to avoid an O(fixtures) round-trip pattern when emitting fade_behavior records. Empty input returns an empty map without a query.
func (*FixtureRepository) GetModeChannels ¶
func (r *FixtureRepository) GetModeChannels(ctx context.Context, modeID string) ([]models.ModeChannel, error)
GetModeChannels returns all mode channels for a mode with their channel definitions.
func (*FixtureRepository) Update ¶
func (r *FixtureRepository) Update(ctx context.Context, fixture *models.FixtureInstance) error
Update updates an existing fixture instance.
func (*FixtureRepository) UpdateDefinition ¶
func (r *FixtureRepository) UpdateDefinition(ctx context.Context, definition *models.FixtureDefinition) error
UpdateDefinition updates an existing fixture definition.
func (*FixtureRepository) UpdateInstanceChannelFadeBehavior ¶ added in v0.3.0
func (r *FixtureRepository) UpdateInstanceChannelFadeBehavior(ctx context.Context, instanceID string, offset int, behavior string) error
UpdateInstanceChannelFadeBehavior updates the FadeBehavior on a single (instanceID, offset) row. Returns ErrChannelOffsetNotFound if no matching row exists — callers convert this to a structured warning.
type GroupInvitationInput ¶ added in v0.2.31
type GroupInvitationInput struct {
GroupID string
Email string
InvitedByID string
Role string
TTL time.Duration // How long until the invitation expires
}
GroupInvitationInput holds the parameters for creating an invitation.
type GroupRepository ¶ added in v0.2.31
type GroupRepository struct {
// contains filtered or unexported fields
}
GroupRepository handles user group and group member data access.
func NewGroupRepository ¶ added in v0.2.31
func NewGroupRepository(db *gorm.DB) *GroupRepository
NewGroupRepository creates a new GroupRepository.
func (*GroupRepository) AddDeviceToGroup ¶ added in v0.2.31
func (r *GroupRepository) AddDeviceToGroup(ctx context.Context, deviceID, groupID string) (*models.DeviceGroupMember, error)
AddDeviceToGroup adds a device to a group.
func (*GroupRepository) AddMember ¶ added in v0.2.31
func (r *GroupRepository) AddMember(ctx context.Context, userID, groupID, role string) (*models.UserGroupMember, error)
AddMember adds a user to a group with the specified role.
func (*GroupRepository) FindDeviceByID ¶ added in v0.2.31
FindDeviceByID returns a device by ID.
func (*GroupRepository) FindDeviceGroupMember ¶ added in v0.2.31
func (r *GroupRepository) FindDeviceGroupMember(ctx context.Context, deviceID, groupID string) (*models.DeviceGroupMember, error)
FindDeviceGroupMember returns a device's membership in a specific group.
func (*GroupRepository) FindGroupByID ¶ added in v0.2.31
FindGroupByID returns a group by ID.
func (*GroupRepository) FindMember ¶ added in v0.2.31
func (r *GroupRepository) FindMember(ctx context.Context, userID, groupID string) (*models.UserGroupMember, error)
FindMember returns a specific group membership.
func (*GroupRepository) FindUserByEmail ¶ added in v0.2.31
FindUserByEmail returns a user by email.
func (*GroupRepository) RemoveDeviceFromGroup ¶ added in v0.2.31
func (r *GroupRepository) RemoveDeviceFromGroup(ctx context.Context, deviceID, groupID string) (bool, error)
RemoveDeviceFromGroup removes a device from a group.
func (*GroupRepository) RemoveMember ¶ added in v0.2.31
RemoveMember removes a user from a group.
func (*GroupRepository) UpdateMemberRole ¶ added in v0.2.31
func (r *GroupRepository) UpdateMemberRole(ctx context.Context, userID, groupID, role string) error
UpdateMemberRole updates a group member's role.
type InvitationRepository ¶ added in v0.2.31
type InvitationRepository struct {
// contains filtered or unexported fields
}
InvitationRepository handles group invitation data access.
func NewInvitationRepository ¶ added in v0.2.31
func NewInvitationRepository(db *gorm.DB) *InvitationRepository
NewInvitationRepository creates a new InvitationRepository.
func (*InvitationRepository) Create ¶ added in v0.2.31
func (r *InvitationRepository) Create(ctx context.Context, groupID, email, invitedByID, role string, expiresAt time.Time) (*models.GroupInvitation, error)
Create creates a new group invitation.
func (*InvitationRepository) CreateWithDefaults ¶ added in v0.2.31
func (r *InvitationRepository) CreateWithDefaults(ctx context.Context, input GroupInvitationInput) (*models.GroupInvitation, error)
CreateWithDefaults creates an invitation with sensible defaults.
func (*InvitationRepository) DB ¶ added in v0.2.31
func (r *InvitationRepository) DB() *gorm.DB
DB returns the underlying database connection for use in transactions.
func (*InvitationRepository) ExpireOverdueInvitations ¶ added in v0.2.31
func (r *InvitationRepository) ExpireOverdueInvitations(ctx context.Context) (int64, error)
ExpireOverdueInvitations marks invitations past their expiry as EXPIRED. Returns the number of expired invitations.
func (*InvitationRepository) FindByGroupID ¶ added in v0.2.31
func (r *InvitationRepository) FindByGroupID(ctx context.Context, groupID string) ([]models.GroupInvitation, error)
FindByGroupID returns all invitations for a group.
func (*InvitationRepository) FindByID ¶ added in v0.2.31
func (r *InvitationRepository) FindByID(ctx context.Context, id string) (*models.GroupInvitation, error)
FindByID returns an invitation by ID.
func (*InvitationRepository) FindByIDForUpdate ¶ added in v0.2.31
func (r *InvitationRepository) FindByIDForUpdate(tx *gorm.DB, id string) (*models.GroupInvitation, error)
FindByIDForUpdate returns an invitation by ID for use inside a transaction. Caller is responsible for wrapping in a transaction. Note: SQLite does not support SELECT FOR UPDATE row-level locking. Concurrency safety is provided by SQLite's database-level write lock acquired when the transaction performs a write operation. The caller should perform a conditional update (checking status hasn't changed) to handle any TOCTOU races.
func (*InvitationRepository) FindPendingByEmail ¶ added in v0.2.31
func (r *InvitationRepository) FindPendingByEmail(ctx context.Context, email string) ([]models.GroupInvitation, error)
FindPendingByEmail returns all pending invitations for an email address.
func (*InvitationRepository) FindPendingByGroupAndEmail ¶ added in v0.2.31
func (r *InvitationRepository) FindPendingByGroupAndEmail(ctx context.Context, groupID, email string) (*models.GroupInvitation, error)
FindPendingByGroupAndEmail returns a pending invitation for a specific group and email.
func (*InvitationRepository) UpdateStatus ¶ added in v0.2.31
func (r *InvitationRepository) UpdateStatus(ctx context.Context, id, status string, acceptedAt *time.Time) error
UpdateStatus updates an invitation's status.
type LookBoardRepository ¶ added in v0.2.30
type LookBoardRepository struct {
// contains filtered or unexported fields
}
LookBoardRepository handles scene board data access.
func NewLookBoardRepository ¶ added in v0.2.30
func NewLookBoardRepository(db *gorm.DB) *LookBoardRepository
NewLookBoardRepository creates a new LookBoardRepository.
func (*LookBoardRepository) CreateButton ¶ added in v0.2.30
func (r *LookBoardRepository) CreateButton(ctx context.Context, button *models.LookBoardButton) error
CreateButton creates a look board button.
func (*LookBoardRepository) CreateButtons ¶ added in v0.2.30
func (r *LookBoardRepository) CreateButtons(ctx context.Context, buttons []models.LookBoardButton) error
CreateButtons creates multiple look board buttons.
func (*LookBoardRepository) CreateWithButtons ¶ added in v0.2.30
func (r *LookBoardRepository) CreateWithButtons(ctx context.Context, board *models.LookBoard, buttons []models.LookBoardButton) error
CreateWithButtons creates a look board with its buttons in a transaction.
func (*LookBoardRepository) Delete ¶ added in v0.2.30
func (r *LookBoardRepository) Delete(ctx context.Context, id string) error
Delete deletes a look board by ID, including all associated buttons. Uses a transaction to ensure atomicity.
func (*LookBoardRepository) DeleteButton ¶ added in v0.2.30
func (r *LookBoardRepository) DeleteButton(ctx context.Context, id string) error
DeleteButton deletes a single look board button by ID.
func (*LookBoardRepository) DeleteButtons ¶ added in v0.2.30
func (r *LookBoardRepository) DeleteButtons(ctx context.Context, boardID string) error
DeleteButtons deletes all buttons for a look board.
func (*LookBoardRepository) FindButtonByID ¶ added in v0.2.30
func (r *LookBoardRepository) FindButtonByID(ctx context.Context, id string) (*models.LookBoardButton, error)
FindButtonByID returns a look board button by ID.
func (*LookBoardRepository) FindByProjectID ¶ added in v0.2.30
func (r *LookBoardRepository) FindByProjectID(ctx context.Context, projectID string) ([]models.LookBoard, error)
FindByProjectID returns all look boards in a project.
func (*LookBoardRepository) FindByRefID ¶ added in v0.3.0
func (r *LookBoardRepository) FindByRefID(ctx context.Context, projectID, refID string) (*models.LookBoard, error)
FindByRefID resolves a look board by (projectID, refID). (nil, nil) on miss.
func (*LookBoardRepository) GetButtons ¶ added in v0.2.30
func (r *LookBoardRepository) GetButtons(ctx context.Context, boardID string) ([]models.LookBoardButton, error)
GetButtons returns all buttons for a look board.
func (*LookBoardRepository) ReplaceButtons ¶ added in v0.3.0
func (r *LookBoardRepository) ReplaceButtons(ctx context.Context, board *models.LookBoard, buttons []models.LookBoardButton) error
ReplaceButtons atomically renames the board (if name != current) and replaces its full button list. If the transaction fails after the buttons are deleted, the board is rolled back to its previous state.
func (*LookBoardRepository) UpdateButton ¶ added in v0.2.30
func (r *LookBoardRepository) UpdateButton(ctx context.Context, button *models.LookBoardButton) error
UpdateButton updates an existing look board button.
type LookRepository ¶ added in v0.2.30
type LookRepository struct {
// contains filtered or unexported fields
}
LookRepository handles look data access.
func NewLookRepository ¶ added in v0.2.30
func NewLookRepository(db *gorm.DB) *LookRepository
NewLookRepository creates a new LookRepository.
func (*LookRepository) CountFixtures ¶ added in v0.2.30
CountFixtures returns the number of fixtures in a look.
func (*LookRepository) CreateFixtureValue ¶ added in v0.2.30
func (r *LookRepository) CreateFixtureValue(ctx context.Context, value *models.FixtureValue) error
CreateFixtureValue creates a fixture value.
func (*LookRepository) CreateFixtureValues ¶ added in v0.2.30
func (r *LookRepository) CreateFixtureValues(ctx context.Context, values []models.FixtureValue) error
CreateFixtureValues creates multiple fixture values.
func (*LookRepository) CreateWithFixtureValues ¶ added in v0.2.30
func (r *LookRepository) CreateWithFixtureValues(ctx context.Context, look *models.Look, fixtureValues []models.FixtureValue) error
CreateWithFixtureValues creates a look with its fixture values in a transaction.
func (*LookRepository) Delete ¶ added in v0.2.30
func (r *LookRepository) Delete(ctx context.Context, id string) error
Delete deletes a look by ID.
func (*LookRepository) DeleteFixtureValue ¶ added in v0.2.30
func (r *LookRepository) DeleteFixtureValue(ctx context.Context, lookID, fixtureID string) error
DeleteFixtureValue deletes a single fixture value by fixture ID and look ID.
func (*LookRepository) DeleteFixtureValues ¶ added in v0.2.30
func (r *LookRepository) DeleteFixtureValues(ctx context.Context, lookID string) error
DeleteFixtureValues deletes all fixture values for a look.
func (*LookRepository) DeleteFixtureValuesByFixtureID ¶ added in v0.2.30
func (r *LookRepository) DeleteFixtureValuesByFixtureID(ctx context.Context, fixtureID string) error
DeleteFixtureValuesByFixtureID deletes all fixture values referencing a specific fixture (across all looks). This should be called when a fixture is deleted to clean up orphaned references.
func (*LookRepository) FindByIDs ¶ added in v0.3.0
FindByIDs batches FindByID into a single SELECT … WHERE id IN (…). Returns rows in arbitrary order; callers index by ID. Empty input returns an empty slice without issuing a query.
func (*LookRepository) FindByProjectID ¶ added in v0.2.30
func (r *LookRepository) FindByProjectID(ctx context.Context, projectID string) ([]models.Look, error)
FindByProjectID returns all looks in a project.
func (*LookRepository) FindByRefID ¶ added in v0.3.0
func (r *LookRepository) FindByRefID(ctx context.Context, projectID, refID string) (*models.Look, error)
FindByRefID resolves a single (projectID, refID). (nil, nil) on miss.
func (*LookRepository) GetFixtureValue ¶ added in v0.2.30
func (r *LookRepository) GetFixtureValue(ctx context.Context, lookID, fixtureID string) (*models.FixtureValue, error)
GetFixtureValue returns a specific fixture value by look and fixture ID.
func (*LookRepository) GetFixtureValues ¶ added in v0.2.30
func (r *LookRepository) GetFixtureValues(ctx context.Context, lookID string) ([]models.FixtureValue, error)
GetFixtureValues returns all fixture values for a look.
func (*LookRepository) MapByRefID ¶ added in v0.3.0
func (r *LookRepository) MapByRefID(ctx context.Context, projectID string, refIDs []string) (map[string]string, error)
MapByRefID resolves a batch of (projectID, refID) pairs in one query. Returns a map keyed by refID; unresolved refIDs are absent from the map.
func (*LookRepository) UpdateAndReplaceFixtureValues ¶ added in v0.3.0
func (r *LookRepository) UpdateAndReplaceFixtureValues(ctx context.Context, look *models.Look, values []models.FixtureValue) error
UpdateAndReplaceFixtureValues atomically renames a Look and replaces its FixtureValues in a single transaction. If CreateFixtureValues fails after DeleteFixtureValues, the entire change is rolled back so the Look retains its previous values rather than being left empty.
Only the Name field is updated — RefID is intentionally protected from overwrite (it's frozen post-creation per Task 14c contract).
func (*LookRepository) UpdateFixtureValue ¶ added in v0.2.30
func (r *LookRepository) UpdateFixtureValue(ctx context.Context, value *models.FixtureValue) error
UpdateFixtureValue updates a fixture value.
type OperationRepository ¶ added in v0.2.30
type OperationRepository struct {
// contains filtered or unexported fields
}
OperationRepository handles operation data access for undo/redo functionality.
func NewOperationRepository ¶ added in v0.2.30
func NewOperationRepository(db *gorm.DB) *OperationRepository
NewOperationRepository creates a new OperationRepository.
func NewOperationRepositoryWithLimit ¶ added in v0.2.30
func NewOperationRepositoryWithLimit(db *gorm.DB, maxHistory int) *OperationRepository
NewOperationRepositoryWithLimit creates a new OperationRepository with a custom history limit.
func (*OperationRepository) ClearHistory ¶ added in v0.2.30
func (r *OperationRepository) ClearHistory(ctx context.Context, projectID string) error
ClearHistory removes all operations for a project.
func (*OperationRepository) ConfirmRedo ¶ added in v0.2.30
func (r *OperationRepository) ConfirmRedo(ctx context.Context, projectID string) error
ConfirmRedo increments the pointer after a successful redo apply. This should only be called after the snapshot has been successfully applied.
func (*OperationRepository) ConfirmUndo ¶ added in v0.2.30
func (r *OperationRepository) ConfirmUndo(ctx context.Context, projectID string) error
ConfirmUndo decrements the pointer after a successful undo apply. This should only be called after the snapshot has been successfully applied.
func (*OperationRepository) DeleteByProjectID ¶ added in v0.2.30
func (r *OperationRepository) DeleteByProjectID(ctx context.Context, projectID string) error
DeleteByProjectID deletes all operations for a project (called on project deletion).
func (*OperationRepository) GetOperationAtSequence ¶ added in v0.2.30
func (r *OperationRepository) GetOperationAtSequence(ctx context.Context, projectID string, seq int) (*models.Operation, error)
GetOperationAtSequence returns the operation at a specific sequence number.
func (*OperationRepository) GetOperationByID ¶ added in v0.2.30
func (r *OperationRepository) GetOperationByID(ctx context.Context, operationID string) (*models.Operation, error)
GetOperationByID returns an operation by its ID.
func (*OperationRepository) GetOperationForRedo ¶ added in v0.2.30
func (r *OperationRepository) GetOperationForRedo(ctx context.Context, projectID string) (*models.Operation, error)
GetOperationForRedo returns the operation that would be redone, without modifying the pointer. Returns nil if there's nothing to redo. Use this with ConfirmRedo for atomic redo operations.
func (*OperationRepository) GetOperationForUndo ¶ added in v0.2.30
func (r *OperationRepository) GetOperationForUndo(ctx context.Context, projectID string) (*models.Operation, error)
GetOperationForUndo returns the operation that would be undone, without modifying the pointer. Returns nil if there's nothing to undo. Use this with ConfirmUndo for atomic undo operations.
func (*OperationRepository) GetOperationsByProject ¶ added in v0.2.30
func (r *OperationRepository) GetOperationsByProject(ctx context.Context, projectID string, page, perPage int) ([]models.Operation, int64, error)
GetOperationsByProject returns paginated operations for a project.
func (*OperationRepository) GetPointer ¶ added in v0.2.30
func (r *OperationRepository) GetPointer(ctx context.Context, projectID string) (*models.OperationPointer, error)
GetPointer returns the operation pointer for a project.
func (*OperationRepository) GetUndoRedoStatus ¶ added in v0.2.30
func (r *OperationRepository) GetUndoRedoStatus(ctx context.Context, projectID string) (*UndoRedoStatus, error)
GetUndoRedoStatus returns the current status for a project.
func (*OperationRepository) RecordOperation ¶ added in v0.2.30
RecordOperation adds a new operation to the history. This is done within a transaction to ensure atomicity with pointer updates. If there are operations after the current sequence (redo candidates), they are truncated.
func (*OperationRepository) Redo ¶ added in v0.2.30
func (r *OperationRepository) Redo(ctx context.Context, projectID string) (*models.Operation, error)
Redo increments the current sequence and returns the operation to redo. Returns nil if there's nothing to redo. DEPRECATED: Use GetOperationForRedo + ConfirmRedo for atomic operations.
func (*OperationRepository) TruncateAfterSequence ¶ added in v0.2.30
func (r *OperationRepository) TruncateAfterSequence(ctx context.Context, projectID string, sequence int) error
TruncateAfterSequence removes all operations after a given sequence. This is used when a new operation follows an undo (forking the timeline).
func (*OperationRepository) Undo ¶ added in v0.2.30
func (r *OperationRepository) Undo(ctx context.Context, projectID string) (*models.Operation, error)
Undo decrements the current sequence and returns the operation to undo. Returns nil if there's nothing to undo. DEPRECATED: Use GetOperationForUndo + ConfirmUndo for atomic operations.
func (*OperationRepository) UpdatePointer ¶ added in v0.2.30
func (r *OperationRepository) UpdatePointer(ctx context.Context, projectID string, newSequence int) error
UpdatePointer updates the current sequence for a project. This is typically called during undo/redo operations.
type ProjectRepository ¶
type ProjectRepository struct {
// contains filtered or unexported fields
}
ProjectRepository handles project data access.
func NewProjectRepository ¶
func NewProjectRepository(db *gorm.DB) *ProjectRepository
NewProjectRepository creates a new ProjectRepository.
func (*ProjectRepository) CountCueLists ¶
CountCueLists returns the number of cue lists in a project.
func (*ProjectRepository) CountFixtures ¶
CountFixtures returns the number of fixtures in a project.
func (*ProjectRepository) CountLooks ¶ added in v0.2.30
CountLooks returns the number of looks in a project.
func (*ProjectRepository) Delete ¶
func (r *ProjectRepository) Delete(ctx context.Context, id string) error
Delete soft-deletes a project by setting deleted_at timestamp.
func (*ProjectRepository) FindAllByGroupIDs ¶ added in v0.2.31
func (r *ProjectRepository) FindAllByGroupIDs(ctx context.Context, groupIDs []string) ([]models.Project, error)
FindAllByGroupIDs returns non-deleted projects that belong to any of the given groups. If groupIDs is nil, returns all non-deleted projects (no filtering). If groupIDs is empty, returns no projects (user has no group memberships).
func (*ProjectRepository) FindAllDeleted ¶ added in v0.2.30
FindAllDeleted returns all soft-deleted projects.
func (*ProjectRepository) FindByIDIncludingDeleted ¶ added in v0.2.30
func (r *ProjectRepository) FindByIDIncludingDeleted(ctx context.Context, id string) (*models.Project, error)
FindByIDIncludingDeleted returns a project by ID regardless of deleted status.
func (*ProjectRepository) FindByIDWithGroupCheck ¶ added in v0.2.31
func (r *ProjectRepository) FindByIDWithGroupCheck(ctx context.Context, id string, groupIDs []string) (*models.Project, error)
FindByIDWithGroupCheck returns a non-deleted project by ID, verifying group access. If groupIDs is nil, no group check is performed (admin or auth-off). Returns nil if the project exists but the user doesn't have group access.
func (*ProjectRepository) PermanentDelete ¶ added in v0.2.30
func (r *ProjectRepository) PermanentDelete(ctx context.Context, id string) error
PermanentDelete permanently removes a project and all its data. This should only be called for projects that are already soft-deleted.
type SettingRepository ¶
type SettingRepository struct {
// contains filtered or unexported fields
}
SettingRepository handles setting data access.
func NewSettingRepository ¶
func NewSettingRepository(db *gorm.DB) *SettingRepository
NewSettingRepository creates a new SettingRepository.
func (*SettingRepository) Delete ¶
func (r *SettingRepository) Delete(ctx context.Context, key string) error
Delete deletes a setting by key.