58 lines
1.5 KiB
Go
58 lines
1.5 KiB
Go
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, *Version) error
|
|
}
|
|
type VersionUsecase struct{ VersionRepo }
|
|
|
|
func NewVersionUsecase(repo VersionRepo) *VersionUsecase { return &VersionUsecase{VersionRepo: repo} }
|