package fs import ( "ZhenTuLocalPassiveAdapter/config" "ZhenTuLocalPassiveAdapter/dto" "context" "sync" "time" ) type Adapter interface { GetFileList(ctx context.Context, path string, relDt time.Time) ([]dto.File, error) } var ( adapterOnce sync.Once adapterInstance Adapter ) func GetAdapter() Adapter { adapterOnce.Do(func() { if config.Config.Record.Storage.Type == "s3" { adapterInstance = &S3Adapter{ StorageConfig: config.Config.Record.Storage, } return } if config.Config.Record.Storage.Type == "alioss" { adapterInstance = &AliOSSAdapter{ StorageConfig: config.Config.Record.Storage, } return } adapterInstance = &LocalAdapter{ config.Config.Record.Storage, } }) return adapterInstance }