Select Git revision
collection.go
schema.go 1.43 KiB
package id
import "fmt"
const (
Schema = "schema"
SchemaPrefix = "schema"
)
var _ Descriptor = &SchemaId{}
type SchemaId struct {
EnvironmentId
CollectionID string `json:"col_id" bson:"col_id,omitempty"`
}
func (id *SchemaId) New() Descriptor {
return &SchemaId{}
}
func (id *SchemaId) Type() string { return Schema }
func (id *SchemaId) String() string {
return Join(id.EnvironmentId.String(), SchemaPrefix, id.CollectionID)
}
func (id *SchemaId) Map() map[string]any {
m := id.EnvironmentId.Map()
m["col_id"] = id.CollectionID
m["type"] = Schema
return m
}
func (id *SchemaId) FromParts(parts []string) error {
if len(parts) != 6 || parts[4] != SchemaPrefix {
return ErrInvalidID
}
if err := id.EnvironmentId.FromParts(parts[:4]); err != nil {
return err
}
id.CollectionID = parts[5]
return nil
}
func (id *SchemaId) FromMap(m map[string]any) error {
id.CollectionID, _ = m["col_id"].(string)
if id.CollectionID == "" {
return fmt.Errorf("%w: SchemaID required", ErrInvalidID)
}
return id.EnvironmentId.FromMap(m)
}
func (id *SchemaId) Validate() error {
if id.CollectionID == "" {
return fmt.Errorf("%w: SchemaID required", ErrInvalidID)
}
return id.EnvironmentId.Validate()
}
func NewSchemaId(spaceID, envID, id string) *ObjectId {
return &ObjectId{Descriptor: &SchemaId{
EnvironmentId: EnvironmentId{
SpaceId: SpaceId{
SpaceID: spaceID,
},
EnvironmentID: envID,
},
CollectionID: id,
}}
}