Files
fm_be/internal/domain/duty_roster/repository.go
2026-07-16 22:16:45 +07:00

39 lines
2.2 KiB
Go

package dutyroster
import (
"context"
"time"
)
type TxRepository interface {
GetRosterByID(ctx context.Context, id []byte) (*DutyRoster, error)
LockRosterByID(ctx context.Context, id []byte) (*DutyRoster, error)
CreateHeader(ctx context.Context, row *DutyRoster) error
UpdateHeader(ctx context.Context, row *DutyRoster) error
SoftDeleteHeader(ctx context.Context, id []byte, deletedBy []byte) error
SoftDeleteCrewsByRosterID(ctx context.Context, rosterID []byte, deletedBy []byte) error
ListActiveCrewsByRosterID(ctx context.Context, rosterID []byte) ([]DutyRosterCrew, error)
InsertCrew(ctx context.Context, row *DutyRosterCrew) error
CrewExists(ctx context.Context, row DutyRosterCrew) (bool, error)
SoftDeleteCrewByUser(ctx context.Context, rosterID []byte, roleCode, crewType string, userID, updatedBy []byte) error
FindRosterIDByBaseDate(ctx context.Context, baseID []byte, dutyDate time.Time) ([]byte, error)
FindRosterIDsByBaseDate(ctx context.Context, baseID []byte, dutyDate time.Time) ([][]byte, error)
MatchCrewByFilter(ctx context.Context, rosterIDs [][]byte, crew DutyRosterCrew) ([]DeletedCrewResult, error)
SoftDeleteCrewRows(ctx context.Context, rows []DeletedCrewResult, deletedBy []byte) error
SoftDeleteCrewForDate(ctx context.Context, baseID []byte, dutyDate time.Time, crew DutyRosterCrew, updatedBy []byte) error
HardDeleteHeader(ctx context.Context, id []byte) error
HardDeleteCrewsByRosterID(ctx context.Context, rosterID []byte) error
}
type Repository interface {
InTx(ctx context.Context, fn func(txRepo TxRepository) error) error
GetBaseDefaultShift(ctx context.Context, baseID []byte, baseType string) (string, error)
GetHeaderByID(ctx context.Context, id []byte) (*HeaderView, error)
GetHeaderByIDByBaseType(ctx context.Context, id []byte, baseType string) (*HeaderView, error)
GetCrewsByRosterIDs(ctx context.Context, rosterIDs [][]byte) ([]CrewView, error)
ListHeadersByRange(ctx context.Context, baseID []byte, from, to time.Time) ([]HeaderView, error)
ListHeadersByRangeByBaseType(ctx context.Context, baseID []byte, from, to time.Time, baseType string) ([]HeaderView, error)
ListHEMSBases(ctx context.Context, baseID []byte) ([]BaseView, error)
ListBasesByType(ctx context.Context, baseID []byte, baseType string) ([]BaseView, error)
}