Documentation
¶
Overview ¶
Package schema implements the DataModel management.
Index ¶
Constants ¶
View Source
const ( TextField = "text" VarcharField = "string" IntField = "int" FloatField = "float" DoubleField = "double" BooleanField = "boolean" DatetimeField = "datetime" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type DataModel ¶
type DataModel struct { ID string `validate:"required" json:"id"` Identifier string `validate:"required" json:"identifier"` Name string `validate:"required" json:"name"` TableName string `json:"tableName"` Properties []Property `validate:"required" json:"properties,omitempty"` PrimaryKeys []string `validate:"required" json:"primaryKeys,omitempty" gorm:"type:varchar(64)[]"` IsDraft bool `json:"isDraft"` TenantID string `json:"tenantId" validate:"required"` Tenant Tenant `json:"-"` CreatedAt int64 `json:"createdAt" gorm:"autoCreateTime"` UpdatedAt int64 `json:"updatedAt" gorm:"autoUpdateTime"` }
DataModel is a notation for describing data or information. Including
Structure of the data ¶
Operations on the data. Users are generally allowed to perform a limited set of actions on the data, e.g., a property is readonly, while another property (think about the password field of DataModel User) is write-only
Constraints on the data. Describe limitations on what the data can be.
type Property ¶
type Property struct { // ID is used to identify this property, which will be used as the name of this column // should follow pattern ^[a-z_][a-z0-9_]*$ // ID should have a max length of 64 ID string `json:"id" validate:"required"` // Name is used for business observers Name string `json:"name" validate:"required"` // Type can be any of "string", "text", "number", "boolean", "date" // string must have a max length, while text does not require this // string => VARCHAR // text => TEXT Type string `json:"type" validate:"required"` Options *map[string]interface{} `json:"options" gorm:"-"` OptionsStr *string `json:"optionsStr"` Comments string `json:"comments"` Required bool `json:"required" validate:"required"` DataModelID string `json:"dataModelId" validate:"required"` }
Property defines all necessary information of one field
func (*Property) GetOptionsForVarCharField ¶
func (p *Property) GetOptionsForVarCharField() (*VarCharOptions, error)
type Tenant ¶ added in v1.2.0
type Tenant struct { ID string `json:"id"` Name string `json:"name"` CreatedAt int64 `json:"createdAt" gorm:"autoCreateTime"` UpdatedAt int64 `json:"updatedAt" gorm:"autoUpdateTime"` }
Tenant is the minimal data isolation layer FIXME: at the very early development, we just have a quite simple tenant model
type VarCharOptions ¶
type VarCharOptions struct {
MaxLength int `json:"maxLength"`
}
Click to show internal directories.
Click to hide internal directories.