diff --git a/spaces/space.go b/spaces/space.go new file mode 100644 index 0000000000000000000000000000000000000000..7f1352381fcd53f4ebe7eef8841e96961e5a0774 --- /dev/null +++ b/spaces/space.go @@ -0,0 +1,56 @@ +package spaces + +type State int + +const ( + StateUnknown State = iota + StateNew // Новое пространство, БД еще не инициализирована + StateReady // Пространство готово к использованию + StatePreparing // Пространство готовится в использованию + StateMaintenance // Пространство находится на обслуживании + StateMigration // Пространство в состоянии выполнения миграций + StateDeleting // Пространство удаляется, данные будут удалены + StateError // Произошла ошибка при конфигурации пространства (см. Space.Error) +) + +type Config struct { + Features []string //Deprecated Возможности используемые пространством +} + +const StateInfoEmpty = "EMPTY" + +type Space struct { + ID string `json:"id,omitempty" bson:"_id"` + OrgID string `json:"org_id,omitempty" bson:"org_id"` + Name string `json:"name,omitempty" bson:"name"` + Description string `json:"desc,omitempty" bson:"desc"` + State State `json:"state" bson:"state"` + StateInfo string `json:"stateInfo,omitempty" bson:"stateInfo,omitempty"` + Config *Config `json:"config" bson:"config"` +} + +func (s Space) Clone() *Space { + return &s +} + +func (s Space) Fetch(i interface{}) interface{} { + p, _ := i.(string) + switch p { + case "ID": + return s.ID + case "OrgID": + return s.OrgID + case "Name": + return s.Name + case "Description": + return s.Description + case "State": + return s.State + case "Config": + return s.Config + default: + panic("unknown parameter") + } + + return nil +}