mirror of
https://git.rwth-aachen.de/acs/public/villas/web-backend-go/
synced 2025-03-30 00:00:12 +01:00
add json tags to all models
This commit is contained in:
parent
e6c8fff397
commit
05a70f80f6
1 changed files with 73 additions and 61 deletions
134
common/models.go
134
common/models.go
|
@ -1,83 +1,95 @@
|
|||
package common
|
||||
|
||||
import (
|
||||
"github.com/jinzhu/gorm"
|
||||
"github.com/jinzhu/gorm/dialects/postgres"
|
||||
"time"
|
||||
)
|
||||
|
||||
// Fields shared by all models (same as gorm.model but including proper json tags)
|
||||
type commonModelFields struct {
|
||||
// ID of the model (primary key in DB)
|
||||
ID uint `gorm:"primary_key",json:"id"`
|
||||
// Time the model object is created
|
||||
CreatedAt time.Time `json:"-"`
|
||||
// Time of the last update of the model object
|
||||
UpdatedAt time.Time `json:"-"`
|
||||
// Time the model is deleted
|
||||
DeletedAt *time.Time `json:"-"`
|
||||
}
|
||||
|
||||
// User data model
|
||||
type User struct {
|
||||
gorm.Model
|
||||
commonModelFields
|
||||
// Username of user
|
||||
Username string `gorm:"unique;not null"`
|
||||
Username string `gorm:"unique;not null",json:"username"`
|
||||
// Password of user
|
||||
Password string `gorm:"not null"`
|
||||
Password string `gorm:"not null",json:"-"`
|
||||
// Mail of user
|
||||
Mail string `gorm:"default:''"`
|
||||
Mail string `gorm:"default:''",json:"mail"`
|
||||
// Role of user
|
||||
Role string `gorm:"default:'user'"`
|
||||
Role string `gorm:"default:'user'",json:"role"`
|
||||
// Scenarios to which user has access
|
||||
Scenarios []*Scenario `gorm:"many2many:user_scenarios"`
|
||||
Scenarios []*Scenario `gorm:"many2many:user_scenarios",json:"-"`
|
||||
}
|
||||
|
||||
// Scenario data model
|
||||
type Scenario struct {
|
||||
gorm.Model
|
||||
commonModelFields
|
||||
// Name of scenario
|
||||
Name string `gorm:"not null"`
|
||||
Name string `gorm:"not null",json:"name"`
|
||||
// Running state of scenario
|
||||
Running bool `gorm:"default:false"`
|
||||
Running bool `gorm:"default:false",json:"running"`
|
||||
// Start parameters of scenario as JSON
|
||||
StartParameters postgres.Jsonb
|
||||
StartParameters postgres.Jsonb `json:"startParameters"`
|
||||
// Users that have access to the scenario
|
||||
Users []*User `gorm:"not null;many2many:user_scenarios"`
|
||||
Users []*User `gorm:"not null;many2many:user_scenarios",json:"-"`
|
||||
// SimulationModels that belong to the scenario
|
||||
SimulationModels []SimulationModel `gorm:"foreignkey:ScenarioID"`
|
||||
SimulationModels []SimulationModel `gorm:"foreignkey:ScenarioID",json:"-"`
|
||||
// Dashboards that belong to the Scenario
|
||||
Dashboards []Dashboard `gorm:"foreignkey:ScenarioID"`
|
||||
Dashboards []Dashboard `gorm:"foreignkey:ScenarioID",json:"-"`
|
||||
}
|
||||
|
||||
// SimulationModel data model
|
||||
type SimulationModel struct {
|
||||
gorm.Model
|
||||
commonModelFields
|
||||
// Name of simulation model
|
||||
Name string `gorm:"not null"`
|
||||
Name string `gorm:"not null",json:"name"`
|
||||
// Number of output signals
|
||||
OutputLength int `gorm:"default:1"`
|
||||
OutputLength int `gorm:"default:1",json:"outputLength"`
|
||||
// Number of input signals
|
||||
InputLength int `gorm:"default:1"`
|
||||
InputLength int `gorm:"default:1",json:"inputLength"`
|
||||
// Start parameters of simulation model as JSON
|
||||
StartParameters postgres.Jsonb
|
||||
StartParameters postgres.Jsonb `json:"startParameters"`
|
||||
// ID of Scenario to which simulation model belongs
|
||||
ScenarioID uint
|
||||
ScenarioID uint `json:"scenarioID"`
|
||||
// ID of simulator associated with simulation model
|
||||
SimulatorID uint
|
||||
SimulatorID uint `json:"simulatorID"`
|
||||
// Mapping of output signals of the simulation model, order of signals is important
|
||||
OutputMapping []Signal `gorm:"foreignkey:SimulationModelID"`
|
||||
OutputMapping []Signal `gorm:"foreignkey:SimulationModelID",json:"-"`
|
||||
// Mapping of input signals of the simulation model, order of signals is important
|
||||
InputMapping []Signal `gorm:"foreignkey:SimulationModelID"`
|
||||
InputMapping []Signal `gorm:"foreignkey:SimulationModelID",json:"-"`
|
||||
// Files of simulation model (can be CIM and other simulation model file formats)
|
||||
Files []File `gorm:"foreignkey:SimulationModelID"`
|
||||
Files []File `gorm:"foreignkey:SimulationModelID",json:"-"`
|
||||
}
|
||||
|
||||
// Signal data model
|
||||
type Signal struct {
|
||||
gorm.Model
|
||||
commonModelFields
|
||||
// Name of Signal
|
||||
Name string
|
||||
Name string `json:"name"`
|
||||
// Unit of Signal
|
||||
Unit string
|
||||
Unit string `json:"unit"`
|
||||
// Index of the Signal in the mapping
|
||||
Index uint
|
||||
Index uint `json:"index"`
|
||||
// Direction of the signal (in or out)
|
||||
Direction string
|
||||
Direction string `json:"direction"`
|
||||
// ID of simulation model
|
||||
SimulationModelID uint
|
||||
SimulationModelID uint `json:"simulationModelID"`
|
||||
}
|
||||
|
||||
// Simulator data model
|
||||
type Simulator struct {
|
||||
gorm.Model
|
||||
commonModelFields
|
||||
// UUID of the simulator
|
||||
UUID string `gorm:"not null",json:"uuid"`
|
||||
// Host if the simulator
|
||||
|
@ -95,74 +107,74 @@ type Simulator struct {
|
|||
// Raw properties of simulator as JSON string
|
||||
RawProperties postgres.Jsonb `json:"rawProperties"`
|
||||
// SimulationModels in which the simulator is used
|
||||
SimulationModels []SimulationModel `gorm:"foreignkey:SimulatorID"`
|
||||
SimulationModels []SimulationModel `gorm:"foreignkey:SimulatorID",json:"-"`
|
||||
}
|
||||
|
||||
// Dashboard data model
|
||||
type Dashboard struct {
|
||||
gorm.Model
|
||||
commonModelFields
|
||||
// Name of dashboard
|
||||
Name string `gorm:"not null"`
|
||||
Name string `gorm:"not null",json:"name"`
|
||||
// Grid of dashboard
|
||||
Grid int `gorm:"default:15"`
|
||||
Grid int `gorm:"default:15",json:"grid"`
|
||||
// ID of scenario to which dashboard belongs
|
||||
ScenarioID uint
|
||||
ScenarioID uint `json:"scenarioID"`
|
||||
// Widgets that belong to dashboard
|
||||
Widgets []Widget `gorm:"foreignkey:DashboardID"`
|
||||
Widgets []Widget `gorm:"foreignkey:DashboardID",json:"-"`
|
||||
}
|
||||
|
||||
// Widget data model
|
||||
type Widget struct {
|
||||
gorm.Model
|
||||
commonModelFields
|
||||
// Name of widget
|
||||
Name string `gorm:"not null"`
|
||||
Name string `gorm:"not null",json:"name"`
|
||||
// Type of widget
|
||||
Type string `gorm:"not null"`
|
||||
Type string `gorm:"not null",json:"type"`
|
||||
// Width of widget
|
||||
Width uint `gorm:"not null"`
|
||||
Width uint `gorm:"not null",json:"width"`
|
||||
// Height of widget
|
||||
Height uint `gorm:"not null"`
|
||||
Height uint `gorm:"not null",json:"height"`
|
||||
// Minimal width of widget
|
||||
MinWidth uint `gorm:"not null"`
|
||||
MinWidth uint `gorm:"not null",json:"minWidth"`
|
||||
// Minimal height of widget
|
||||
MinHeight uint `gorm:"not null"`
|
||||
MinHeight uint `gorm:"not null",json:"minHeight"`
|
||||
// X position of widget
|
||||
X int `gorm:"not null"`
|
||||
X int `gorm:"not null",json:"x"`
|
||||
// Y position of widget
|
||||
Y int `gorm:"not null"`
|
||||
Y int `gorm:"not null",json:"y"`
|
||||
// Z position of widget
|
||||
Z int `gorm:"not null"`
|
||||
Z int `gorm:"not null",json:"z"`
|
||||
// Locked state of widget
|
||||
IsLocked bool `gorm:"default:false"`
|
||||
IsLocked bool `gorm:"default:false",json:"isLocked"`
|
||||
// Custom properties of widget as JSON string
|
||||
CustomProperties postgres.Jsonb
|
||||
CustomProperties postgres.Jsonb `json:"customProperties"`
|
||||
// ID of dashboard to which widget belongs
|
||||
DashboardID uint
|
||||
DashboardID uint `json:"dashboardID"`
|
||||
// Files that belong to widget (for example images)
|
||||
Files []File `gorm:"foreignkey:WidgetID"`
|
||||
Files []File `gorm:"foreignkey:WidgetID",json:"-"`
|
||||
}
|
||||
|
||||
// File data model
|
||||
type File struct {
|
||||
gorm.Model
|
||||
commonModelFields
|
||||
// Name of file
|
||||
Name string `gorm:"not null"`
|
||||
Name string `gorm:"not null",json:"name"`
|
||||
// Type of file (MIME type)
|
||||
Type string
|
||||
Type string `json:"type"`
|
||||
// Size of file (in byte)
|
||||
Size uint
|
||||
Size uint `json:"size"`
|
||||
// Height of image (only needed in case of image)
|
||||
ImageHeight uint
|
||||
ImageHeight uint `json:"imageHeight"`
|
||||
// Width of image (only needed in case of image)
|
||||
ImageWidth uint
|
||||
ImageWidth uint `json:"imageWidth"`
|
||||
// Last modification time of file
|
||||
Date string
|
||||
Date string `json:"date"`
|
||||
// ID of model to which file belongs
|
||||
SimulationModelID uint
|
||||
SimulationModelID uint `json:"simulationModelID"`
|
||||
// ID of widget to which file belongs
|
||||
WidgetID uint
|
||||
WidgetID uint `json:"widgetID"`
|
||||
// File itself
|
||||
FileData []byte `gorm:"column:FileData"`
|
||||
FileData []byte `gorm:"column:FileData",json:"-"`
|
||||
}
|
||||
|
||||
// Credentials type (not for DB)
|
||||
|
|
Loading…
Add table
Reference in a new issue