mirror of
https://github.com/holos-run/holos.git
synced 2026-03-20 01:04:59 +00:00
This patch refactors the API to be resource-oriented around one service per resource type. PlatformService, OrganizationService, UserService, etc... Validation is improved to use CEL rules provided by [protovalidate][1]. Place holders for FieldMask and other best practices are added, but are unimplemented as per [API Best Practices][2]. The intent is to set us up well for copying and pasting solid existing examples as we add features. With this patch the server and web app client are both updated to use the refactored API, however the following are not working: 1. Update the model. 2. Field Masks. [1]: https://buf.build/bufbuild/protovalidate [2]: https://protobuf.dev/programming-guides/api/
292 lines
10 KiB
Go
292 lines
10 KiB
Go
// Code generated by ent, DO NOT EDIT.
|
|
|
|
package ent
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"strings"
|
|
"time"
|
|
|
|
"entgo.io/ent"
|
|
"entgo.io/ent/dialect/sql"
|
|
"github.com/gofrs/uuid"
|
|
"github.com/holos-run/holos/internal/ent/organization"
|
|
"github.com/holos-run/holos/internal/ent/platform"
|
|
"github.com/holos-run/holos/internal/ent/user"
|
|
storage "github.com/holos-run/holos/service/gen/holos/storage/v1alpha1"
|
|
)
|
|
|
|
// Platform is the model entity for the Platform schema.
|
|
type Platform struct {
|
|
config `json:"-"`
|
|
// ID of the ent.
|
|
ID uuid.UUID `json:"id,omitempty"`
|
|
// CreatedAt holds the value of the "created_at" field.
|
|
CreatedAt time.Time `json:"created_at,omitempty"`
|
|
// UpdatedAt holds the value of the "updated_at" field.
|
|
UpdatedAt time.Time `json:"updated_at,omitempty"`
|
|
// CreatedByID holds the value of the "created_by_id" field.
|
|
CreatedByID uuid.UUID `json:"created_by_id,omitempty"`
|
|
// UpdatedByID holds the value of the "updated_by_id" field.
|
|
UpdatedByID uuid.UUID `json:"updated_by_id,omitempty"`
|
|
// OrgID holds the value of the "org_id" field.
|
|
OrgID uuid.UUID `json:"org_id,omitempty"`
|
|
// Name holds the value of the "name" field.
|
|
Name string `json:"name,omitempty"`
|
|
// DisplayName holds the value of the "display_name" field.
|
|
DisplayName string `json:"display_name,omitempty"`
|
|
// JSON representation of FormlyFormConfig[] refer to https://github.com/holos-run/holos/issues/161
|
|
Form *storage.Form `json:"form,omitempty"`
|
|
// JSON representation of the form model which holds user input values refer to https://github.com/holos-run/holos/issues/161
|
|
Model *storage.Model `json:"model,omitempty"`
|
|
// CUE definition to vet the model against e.g. #PlatformConfig
|
|
Cue []byte `json:"cue,omitempty"`
|
|
// The definition name to vet config_values against config_cue e.g. '#PlatformSpec'
|
|
CueDefinition string `json:"cue_definition,omitempty"`
|
|
// Edges holds the relations/edges for other nodes in the graph.
|
|
// The values are being populated by the PlatformQuery when eager-loading is set.
|
|
Edges PlatformEdges `json:"edges"`
|
|
selectValues sql.SelectValues
|
|
}
|
|
|
|
// PlatformEdges holds the relations/edges for other nodes in the graph.
|
|
type PlatformEdges struct {
|
|
// Creator holds the value of the creator edge.
|
|
Creator *User `json:"creator,omitempty"`
|
|
// Editor holds the value of the editor edge.
|
|
Editor *User `json:"editor,omitempty"`
|
|
// Organization holds the value of the organization edge.
|
|
Organization *Organization `json:"organization,omitempty"`
|
|
// loadedTypes holds the information for reporting if a
|
|
// type was loaded (or requested) in eager-loading or not.
|
|
loadedTypes [3]bool
|
|
}
|
|
|
|
// CreatorOrErr returns the Creator value or an error if the edge
|
|
// was not loaded in eager-loading, or loaded but was not found.
|
|
func (e PlatformEdges) CreatorOrErr() (*User, error) {
|
|
if e.Creator != nil {
|
|
return e.Creator, nil
|
|
} else if e.loadedTypes[0] {
|
|
return nil, &NotFoundError{label: user.Label}
|
|
}
|
|
return nil, &NotLoadedError{edge: "creator"}
|
|
}
|
|
|
|
// EditorOrErr returns the Editor value or an error if the edge
|
|
// was not loaded in eager-loading, or loaded but was not found.
|
|
func (e PlatformEdges) EditorOrErr() (*User, error) {
|
|
if e.Editor != nil {
|
|
return e.Editor, nil
|
|
} else if e.loadedTypes[1] {
|
|
return nil, &NotFoundError{label: user.Label}
|
|
}
|
|
return nil, &NotLoadedError{edge: "editor"}
|
|
}
|
|
|
|
// OrganizationOrErr returns the Organization value or an error if the edge
|
|
// was not loaded in eager-loading, or loaded but was not found.
|
|
func (e PlatformEdges) OrganizationOrErr() (*Organization, error) {
|
|
if e.Organization != nil {
|
|
return e.Organization, nil
|
|
} else if e.loadedTypes[2] {
|
|
return nil, &NotFoundError{label: organization.Label}
|
|
}
|
|
return nil, &NotLoadedError{edge: "organization"}
|
|
}
|
|
|
|
// scanValues returns the types for scanning values from sql.Rows.
|
|
func (*Platform) scanValues(columns []string) ([]any, error) {
|
|
values := make([]any, len(columns))
|
|
for i := range columns {
|
|
switch columns[i] {
|
|
case platform.FieldForm, platform.FieldModel, platform.FieldCue:
|
|
values[i] = new([]byte)
|
|
case platform.FieldName, platform.FieldDisplayName, platform.FieldCueDefinition:
|
|
values[i] = new(sql.NullString)
|
|
case platform.FieldCreatedAt, platform.FieldUpdatedAt:
|
|
values[i] = new(sql.NullTime)
|
|
case platform.FieldID, platform.FieldCreatedByID, platform.FieldUpdatedByID, platform.FieldOrgID:
|
|
values[i] = new(uuid.UUID)
|
|
default:
|
|
values[i] = new(sql.UnknownType)
|
|
}
|
|
}
|
|
return values, nil
|
|
}
|
|
|
|
// assignValues assigns the values that were returned from sql.Rows (after scanning)
|
|
// to the Platform fields.
|
|
func (pl *Platform) assignValues(columns []string, values []any) error {
|
|
if m, n := len(values), len(columns); m < n {
|
|
return fmt.Errorf("mismatch number of scan values: %d != %d", m, n)
|
|
}
|
|
for i := range columns {
|
|
switch columns[i] {
|
|
case platform.FieldID:
|
|
if value, ok := values[i].(*uuid.UUID); !ok {
|
|
return fmt.Errorf("unexpected type %T for field id", values[i])
|
|
} else if value != nil {
|
|
pl.ID = *value
|
|
}
|
|
case platform.FieldCreatedAt:
|
|
if value, ok := values[i].(*sql.NullTime); !ok {
|
|
return fmt.Errorf("unexpected type %T for field created_at", values[i])
|
|
} else if value.Valid {
|
|
pl.CreatedAt = value.Time
|
|
}
|
|
case platform.FieldUpdatedAt:
|
|
if value, ok := values[i].(*sql.NullTime); !ok {
|
|
return fmt.Errorf("unexpected type %T for field updated_at", values[i])
|
|
} else if value.Valid {
|
|
pl.UpdatedAt = value.Time
|
|
}
|
|
case platform.FieldCreatedByID:
|
|
if value, ok := values[i].(*uuid.UUID); !ok {
|
|
return fmt.Errorf("unexpected type %T for field created_by_id", values[i])
|
|
} else if value != nil {
|
|
pl.CreatedByID = *value
|
|
}
|
|
case platform.FieldUpdatedByID:
|
|
if value, ok := values[i].(*uuid.UUID); !ok {
|
|
return fmt.Errorf("unexpected type %T for field updated_by_id", values[i])
|
|
} else if value != nil {
|
|
pl.UpdatedByID = *value
|
|
}
|
|
case platform.FieldOrgID:
|
|
if value, ok := values[i].(*uuid.UUID); !ok {
|
|
return fmt.Errorf("unexpected type %T for field org_id", values[i])
|
|
} else if value != nil {
|
|
pl.OrgID = *value
|
|
}
|
|
case platform.FieldName:
|
|
if value, ok := values[i].(*sql.NullString); !ok {
|
|
return fmt.Errorf("unexpected type %T for field name", values[i])
|
|
} else if value.Valid {
|
|
pl.Name = value.String
|
|
}
|
|
case platform.FieldDisplayName:
|
|
if value, ok := values[i].(*sql.NullString); !ok {
|
|
return fmt.Errorf("unexpected type %T for field display_name", values[i])
|
|
} else if value.Valid {
|
|
pl.DisplayName = value.String
|
|
}
|
|
case platform.FieldForm:
|
|
if value, ok := values[i].(*[]byte); !ok {
|
|
return fmt.Errorf("unexpected type %T for field form", values[i])
|
|
} else if value != nil && len(*value) > 0 {
|
|
if err := json.Unmarshal(*value, &pl.Form); err != nil {
|
|
return fmt.Errorf("unmarshal field form: %w", err)
|
|
}
|
|
}
|
|
case platform.FieldModel:
|
|
if value, ok := values[i].(*[]byte); !ok {
|
|
return fmt.Errorf("unexpected type %T for field model", values[i])
|
|
} else if value != nil && len(*value) > 0 {
|
|
if err := json.Unmarshal(*value, &pl.Model); err != nil {
|
|
return fmt.Errorf("unmarshal field model: %w", err)
|
|
}
|
|
}
|
|
case platform.FieldCue:
|
|
if value, ok := values[i].(*[]byte); !ok {
|
|
return fmt.Errorf("unexpected type %T for field cue", values[i])
|
|
} else if value != nil {
|
|
pl.Cue = *value
|
|
}
|
|
case platform.FieldCueDefinition:
|
|
if value, ok := values[i].(*sql.NullString); !ok {
|
|
return fmt.Errorf("unexpected type %T for field cue_definition", values[i])
|
|
} else if value.Valid {
|
|
pl.CueDefinition = value.String
|
|
}
|
|
default:
|
|
pl.selectValues.Set(columns[i], values[i])
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Value returns the ent.Value that was dynamically selected and assigned to the Platform.
|
|
// This includes values selected through modifiers, order, etc.
|
|
func (pl *Platform) Value(name string) (ent.Value, error) {
|
|
return pl.selectValues.Get(name)
|
|
}
|
|
|
|
// QueryCreator queries the "creator" edge of the Platform entity.
|
|
func (pl *Platform) QueryCreator() *UserQuery {
|
|
return NewPlatformClient(pl.config).QueryCreator(pl)
|
|
}
|
|
|
|
// QueryEditor queries the "editor" edge of the Platform entity.
|
|
func (pl *Platform) QueryEditor() *UserQuery {
|
|
return NewPlatformClient(pl.config).QueryEditor(pl)
|
|
}
|
|
|
|
// QueryOrganization queries the "organization" edge of the Platform entity.
|
|
func (pl *Platform) QueryOrganization() *OrganizationQuery {
|
|
return NewPlatformClient(pl.config).QueryOrganization(pl)
|
|
}
|
|
|
|
// Update returns a builder for updating this Platform.
|
|
// Note that you need to call Platform.Unwrap() before calling this method if this Platform
|
|
// was returned from a transaction, and the transaction was committed or rolled back.
|
|
func (pl *Platform) Update() *PlatformUpdateOne {
|
|
return NewPlatformClient(pl.config).UpdateOne(pl)
|
|
}
|
|
|
|
// Unwrap unwraps the Platform entity that was returned from a transaction after it was closed,
|
|
// so that all future queries will be executed through the driver which created the transaction.
|
|
func (pl *Platform) Unwrap() *Platform {
|
|
_tx, ok := pl.config.driver.(*txDriver)
|
|
if !ok {
|
|
panic("ent: Platform is not a transactional entity")
|
|
}
|
|
pl.config.driver = _tx.drv
|
|
return pl
|
|
}
|
|
|
|
// String implements the fmt.Stringer.
|
|
func (pl *Platform) String() string {
|
|
var builder strings.Builder
|
|
builder.WriteString("Platform(")
|
|
builder.WriteString(fmt.Sprintf("id=%v, ", pl.ID))
|
|
builder.WriteString("created_at=")
|
|
builder.WriteString(pl.CreatedAt.Format(time.ANSIC))
|
|
builder.WriteString(", ")
|
|
builder.WriteString("updated_at=")
|
|
builder.WriteString(pl.UpdatedAt.Format(time.ANSIC))
|
|
builder.WriteString(", ")
|
|
builder.WriteString("created_by_id=")
|
|
builder.WriteString(fmt.Sprintf("%v", pl.CreatedByID))
|
|
builder.WriteString(", ")
|
|
builder.WriteString("updated_by_id=")
|
|
builder.WriteString(fmt.Sprintf("%v", pl.UpdatedByID))
|
|
builder.WriteString(", ")
|
|
builder.WriteString("org_id=")
|
|
builder.WriteString(fmt.Sprintf("%v", pl.OrgID))
|
|
builder.WriteString(", ")
|
|
builder.WriteString("name=")
|
|
builder.WriteString(pl.Name)
|
|
builder.WriteString(", ")
|
|
builder.WriteString("display_name=")
|
|
builder.WriteString(pl.DisplayName)
|
|
builder.WriteString(", ")
|
|
builder.WriteString("form=")
|
|
builder.WriteString(fmt.Sprintf("%v", pl.Form))
|
|
builder.WriteString(", ")
|
|
builder.WriteString("model=")
|
|
builder.WriteString(fmt.Sprintf("%v", pl.Model))
|
|
builder.WriteString(", ")
|
|
builder.WriteString("cue=")
|
|
builder.WriteString(fmt.Sprintf("%v", pl.Cue))
|
|
builder.WriteString(", ")
|
|
builder.WriteString("cue_definition=")
|
|
builder.WriteString(pl.CueDefinition)
|
|
builder.WriteByte(')')
|
|
return builder.String()
|
|
}
|
|
|
|
// Platforms is a parsable slice of Platform.
|
|
type Platforms []*Platform
|