package system import ( "context" "errors" "time" ) var ErrInvalidVersion = errors.New("版本信息格式错误") type VersionStage string const ( VersionStageMenus VersionStage = "menus" VersionStageAPIs VersionStage = "apis" VersionStageDictionaries VersionStage = "dictionaries" VersionStageJSON VersionStage = "json" VersionStageSave VersionStage = "save" ) type VersionStageError struct { Stage VersionStage Err error } func (e *VersionStageError) Error() string { return e.Err.Error() } func (e *VersionStageError) Unwrap() error { return e.Err } type Version struct { ID uint CreatedAt time.Time UpdatedAt time.Time Name *string Code *string Description *string Data *string } type VersionBundle struct { Name string Code string Description string ExportTime string Menus []*Menu APIs []*API Dictionaries []*Dictionary } type VersionRepo interface { CreateVersion(context.Context, *Version) error DeleteVersions(context.Context, []uint) error FindVersion(context.Context, uint) (*Version, error) ListVersions(context.Context, int, int, string, string, []*time.Time) ([]*Version, int64, error) BuildVersionBundle(context.Context, []uint, []uint, []uint) (*VersionBundle, error) ImportVersionBundle(context.Context, *VersionBundle) error } type VersionUsecase struct{ VersionRepo } func NewVersionUsecase(repo VersionRepo) *VersionUsecase { return &VersionUsecase{VersionRepo: repo} }