From 0c106fc6b248db58af17f9bb6142593022c6e932 Mon Sep 17 00:00:00 2001
From: Anton Sattarov <sattarov@perx.ru>
Date: Thu, 23 Mar 2023 13:22:21 +0300
Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?=
 =?UTF-8?q?=D0=BD=D0=BE=20=D0=BE=D0=BF=D1=80=D0=B5=D0=B4=D0=B5=D0=BB=D0=B5?=
 =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=82=D1=83?=
 =?UTF-8?q?=D1=80=D1=8B=20space?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 spaces/space.go | 56 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 56 insertions(+)
 create mode 100644 spaces/space.go

diff --git a/spaces/space.go b/spaces/space.go
new file mode 100644
index 00000000..7f135238
--- /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
+}
-- 
GitLab