Switch to edge fields for passwordtoken.
This commit is contained in:
parent
acf8a830d7
commit
1b86097376
19 changed files with 217 additions and 109 deletions
|
|
@ -39,7 +39,11 @@ func fieldName(name string) string {
|
||||||
|
|
||||||
parts := strings.Split(name, "_")
|
parts := strings.Split(name, "_")
|
||||||
for i := 0; i < len(parts); i++ {
|
for i := 0; i < len(parts); i++ {
|
||||||
parts[i] = upperFirst(parts[i])
|
if parts[i] == "id" {
|
||||||
|
parts[i] = "ID"
|
||||||
|
} else {
|
||||||
|
parts[i] = upperFirst(parts[i])
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return strings.Join(parts, "")
|
return strings.Join(parts, "")
|
||||||
|
|
|
||||||
|
|
@ -89,8 +89,9 @@ func (h *Handler) PasswordTokenCreate(ctx echo.Context) error {
|
||||||
|
|
||||||
op := h.client.PasswordToken.Create()
|
op := h.client.PasswordToken.Create()
|
||||||
op.SetHash(payload.Hash)
|
op.SetHash(payload.Hash)
|
||||||
|
op.SetUserID(payload.UserID)
|
||||||
op.SetCreatedAt(payload.CreatedAt)
|
op.SetCreatedAt(payload.CreatedAt)
|
||||||
op.SetUserID(payload.User)
|
// op.SetUserID(payload.User)
|
||||||
_, err := op.Save(ctx.Request().Context())
|
_, err := op.Save(ctx.Request().Context())
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
@ -108,8 +109,9 @@ func (h *Handler) PasswordTokenUpdate(ctx echo.Context, id int) error {
|
||||||
|
|
||||||
op := entity.Update()
|
op := entity.Update()
|
||||||
op.SetHash(payload.Hash)
|
op.SetHash(payload.Hash)
|
||||||
|
op.SetUserID(payload.UserID)
|
||||||
op.SetCreatedAt(payload.CreatedAt)
|
op.SetCreatedAt(payload.CreatedAt)
|
||||||
op.SetUserID(payload.User)
|
// op.SetUserID(payload.User)
|
||||||
_, err = op.Save(ctx.Request().Context())
|
_, err = op.Save(ctx.Request().Context())
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
@ -133,6 +135,7 @@ func (h *Handler) PasswordTokenList(ctx echo.Context) (*EntityList, error) {
|
||||||
|
|
||||||
list := &EntityList{
|
list := &EntityList{
|
||||||
Columns: []string{
|
Columns: []string{
|
||||||
|
"User id",
|
||||||
"Created at",
|
"Created at",
|
||||||
// "User", ?
|
// "User", ?
|
||||||
},
|
},
|
||||||
|
|
@ -144,6 +147,7 @@ func (h *Handler) PasswordTokenList(ctx echo.Context) (*EntityList, error) {
|
||||||
list.Entities = append(list.Entities, EntityValues{
|
list.Entities = append(list.Entities, EntityValues{
|
||||||
ID: res[i].ID,
|
ID: res[i].ID,
|
||||||
Values: []string{
|
Values: []string{
|
||||||
|
fmt.Sprint(res[i].UserID),
|
||||||
fmt.Sprint(res[i].CreatedAt),
|
fmt.Sprint(res[i].CreatedAt),
|
||||||
// TODO User ?
|
// TODO User ?
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -100,7 +100,7 @@
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- range $e := $n.Edges }}
|
{{- range $e := $n.Edges }}
|
||||||
{{- if not $e.Inverse}}
|
{{- if not $e.Inverse}}
|
||||||
op.Set{{ fieldName $e.Name }}ID(payload.{{ fieldName $e.Name }})
|
// op.Set{{ fieldName $e.Name }}ID(payload.{{ fieldName $e.Name }})
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
_, err := op.Save(ctx.Request().Context())
|
_, err := op.Save(ctx.Request().Context())
|
||||||
|
|
@ -126,7 +126,7 @@
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- range $e := $n.Edges }}
|
{{- range $e := $n.Edges }}
|
||||||
{{- if not $e.Inverse}}
|
{{- if not $e.Inverse}}
|
||||||
op.Set{{ fieldName $e.Name }}ID(payload.{{ fieldName $e.Name }})
|
// op.Set{{ fieldName $e.Name }}ID(payload.{{ fieldName $e.Name }})
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
_, err = op.Save(ctx.Request().Context())
|
_, err = op.Save(ctx.Request().Context())
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
// Edges.
|
// Edges.
|
||||||
{{- range $e := $n.Edges }}
|
{{- range $e := $n.Edges }}
|
||||||
{{- if not $e.Inverse}}
|
{{- if not $e.Inverse}}
|
||||||
{{ fieldName $e.Name }} int `form:"{{ $e.Name }}"`
|
// {{ fieldName $e.Name }} int `form:"{{ $e.Name }}"`
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,10 @@ import "time"
|
||||||
type PasswordToken struct {
|
type PasswordToken struct {
|
||||||
// Fields.
|
// Fields.
|
||||||
Hash string `form:"hash"`
|
Hash string `form:"hash"`
|
||||||
|
UserID int `form:"user_id"`
|
||||||
CreatedAt time.Time `form:"created_at"`
|
CreatedAt time.Time `form:"created_at"`
|
||||||
// Edges.
|
// Edges.
|
||||||
User int `form:"user"`
|
// User int `form:"user"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type User struct {
|
type User struct {
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ var (
|
||||||
{Name: "id", Type: field.TypeInt, Increment: true},
|
{Name: "id", Type: field.TypeInt, Increment: true},
|
||||||
{Name: "hash", Type: field.TypeString},
|
{Name: "hash", Type: field.TypeString},
|
||||||
{Name: "created_at", Type: field.TypeTime},
|
{Name: "created_at", Type: field.TypeTime},
|
||||||
{Name: "password_token_user", Type: field.TypeInt},
|
{Name: "user_id", Type: field.TypeInt},
|
||||||
}
|
}
|
||||||
// PasswordTokensTable holds the schema information for the "password_tokens" table.
|
// PasswordTokensTable holds the schema information for the "password_tokens" table.
|
||||||
PasswordTokensTable = &schema.Table{
|
PasswordTokensTable = &schema.Table{
|
||||||
|
|
|
||||||
|
|
@ -179,6 +179,42 @@ func (m *PasswordTokenMutation) ResetHash() {
|
||||||
m.hash = nil
|
m.hash = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetUserID sets the "user_id" field.
|
||||||
|
func (m *PasswordTokenMutation) SetUserID(i int) {
|
||||||
|
m.user = &i
|
||||||
|
}
|
||||||
|
|
||||||
|
// UserID returns the value of the "user_id" field in the mutation.
|
||||||
|
func (m *PasswordTokenMutation) UserID() (r int, exists bool) {
|
||||||
|
v := m.user
|
||||||
|
if v == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
return *v, true
|
||||||
|
}
|
||||||
|
|
||||||
|
// OldUserID returns the old "user_id" field's value of the PasswordToken entity.
|
||||||
|
// If the PasswordToken object wasn't provided to the builder, the object is fetched from the database.
|
||||||
|
// An error is returned if the mutation operation is not UpdateOne, or the database query fails.
|
||||||
|
func (m *PasswordTokenMutation) OldUserID(ctx context.Context) (v int, err error) {
|
||||||
|
if !m.op.Is(OpUpdateOne) {
|
||||||
|
return v, errors.New("OldUserID is only allowed on UpdateOne operations")
|
||||||
|
}
|
||||||
|
if m.id == nil || m.oldValue == nil {
|
||||||
|
return v, errors.New("OldUserID requires an ID field in the mutation")
|
||||||
|
}
|
||||||
|
oldValue, err := m.oldValue(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return v, fmt.Errorf("querying old value for OldUserID: %w", err)
|
||||||
|
}
|
||||||
|
return oldValue.UserID, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResetUserID resets all changes to the "user_id" field.
|
||||||
|
func (m *PasswordTokenMutation) ResetUserID() {
|
||||||
|
m.user = nil
|
||||||
|
}
|
||||||
|
|
||||||
// SetCreatedAt sets the "created_at" field.
|
// SetCreatedAt sets the "created_at" field.
|
||||||
func (m *PasswordTokenMutation) SetCreatedAt(t time.Time) {
|
func (m *PasswordTokenMutation) SetCreatedAt(t time.Time) {
|
||||||
m.created_at = &t
|
m.created_at = &t
|
||||||
|
|
@ -215,14 +251,10 @@ func (m *PasswordTokenMutation) ResetCreatedAt() {
|
||||||
m.created_at = nil
|
m.created_at = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetUserID sets the "user" edge to the User entity by id.
|
|
||||||
func (m *PasswordTokenMutation) SetUserID(id int) {
|
|
||||||
m.user = &id
|
|
||||||
}
|
|
||||||
|
|
||||||
// ClearUser clears the "user" edge to the User entity.
|
// ClearUser clears the "user" edge to the User entity.
|
||||||
func (m *PasswordTokenMutation) ClearUser() {
|
func (m *PasswordTokenMutation) ClearUser() {
|
||||||
m.cleareduser = true
|
m.cleareduser = true
|
||||||
|
m.clearedFields[passwordtoken.FieldUserID] = struct{}{}
|
||||||
}
|
}
|
||||||
|
|
||||||
// UserCleared reports if the "user" edge to the User entity was cleared.
|
// UserCleared reports if the "user" edge to the User entity was cleared.
|
||||||
|
|
@ -230,14 +262,6 @@ func (m *PasswordTokenMutation) UserCleared() bool {
|
||||||
return m.cleareduser
|
return m.cleareduser
|
||||||
}
|
}
|
||||||
|
|
||||||
// UserID returns the "user" edge ID in the mutation.
|
|
||||||
func (m *PasswordTokenMutation) UserID() (id int, exists bool) {
|
|
||||||
if m.user != nil {
|
|
||||||
return *m.user, true
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// UserIDs returns the "user" edge IDs in the mutation.
|
// UserIDs returns the "user" edge IDs in the mutation.
|
||||||
// Note that IDs always returns len(IDs) <= 1 for unique edges, and you should use
|
// Note that IDs always returns len(IDs) <= 1 for unique edges, and you should use
|
||||||
// UserID instead. It exists only for internal usage by the builders.
|
// UserID instead. It exists only for internal usage by the builders.
|
||||||
|
|
@ -288,10 +312,13 @@ func (m *PasswordTokenMutation) Type() string {
|
||||||
// order to get all numeric fields that were incremented/decremented, call
|
// order to get all numeric fields that were incremented/decremented, call
|
||||||
// AddedFields().
|
// AddedFields().
|
||||||
func (m *PasswordTokenMutation) Fields() []string {
|
func (m *PasswordTokenMutation) Fields() []string {
|
||||||
fields := make([]string, 0, 2)
|
fields := make([]string, 0, 3)
|
||||||
if m.hash != nil {
|
if m.hash != nil {
|
||||||
fields = append(fields, passwordtoken.FieldHash)
|
fields = append(fields, passwordtoken.FieldHash)
|
||||||
}
|
}
|
||||||
|
if m.user != nil {
|
||||||
|
fields = append(fields, passwordtoken.FieldUserID)
|
||||||
|
}
|
||||||
if m.created_at != nil {
|
if m.created_at != nil {
|
||||||
fields = append(fields, passwordtoken.FieldCreatedAt)
|
fields = append(fields, passwordtoken.FieldCreatedAt)
|
||||||
}
|
}
|
||||||
|
|
@ -305,6 +332,8 @@ func (m *PasswordTokenMutation) Field(name string) (ent.Value, bool) {
|
||||||
switch name {
|
switch name {
|
||||||
case passwordtoken.FieldHash:
|
case passwordtoken.FieldHash:
|
||||||
return m.Hash()
|
return m.Hash()
|
||||||
|
case passwordtoken.FieldUserID:
|
||||||
|
return m.UserID()
|
||||||
case passwordtoken.FieldCreatedAt:
|
case passwordtoken.FieldCreatedAt:
|
||||||
return m.CreatedAt()
|
return m.CreatedAt()
|
||||||
}
|
}
|
||||||
|
|
@ -318,6 +347,8 @@ func (m *PasswordTokenMutation) OldField(ctx context.Context, name string) (ent.
|
||||||
switch name {
|
switch name {
|
||||||
case passwordtoken.FieldHash:
|
case passwordtoken.FieldHash:
|
||||||
return m.OldHash(ctx)
|
return m.OldHash(ctx)
|
||||||
|
case passwordtoken.FieldUserID:
|
||||||
|
return m.OldUserID(ctx)
|
||||||
case passwordtoken.FieldCreatedAt:
|
case passwordtoken.FieldCreatedAt:
|
||||||
return m.OldCreatedAt(ctx)
|
return m.OldCreatedAt(ctx)
|
||||||
}
|
}
|
||||||
|
|
@ -336,6 +367,13 @@ func (m *PasswordTokenMutation) SetField(name string, value ent.Value) error {
|
||||||
}
|
}
|
||||||
m.SetHash(v)
|
m.SetHash(v)
|
||||||
return nil
|
return nil
|
||||||
|
case passwordtoken.FieldUserID:
|
||||||
|
v, ok := value.(int)
|
||||||
|
if !ok {
|
||||||
|
return fmt.Errorf("unexpected type %T for field %s", value, name)
|
||||||
|
}
|
||||||
|
m.SetUserID(v)
|
||||||
|
return nil
|
||||||
case passwordtoken.FieldCreatedAt:
|
case passwordtoken.FieldCreatedAt:
|
||||||
v, ok := value.(time.Time)
|
v, ok := value.(time.Time)
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|
@ -350,13 +388,16 @@ func (m *PasswordTokenMutation) SetField(name string, value ent.Value) error {
|
||||||
// AddedFields returns all numeric fields that were incremented/decremented during
|
// AddedFields returns all numeric fields that were incremented/decremented during
|
||||||
// this mutation.
|
// this mutation.
|
||||||
func (m *PasswordTokenMutation) AddedFields() []string {
|
func (m *PasswordTokenMutation) AddedFields() []string {
|
||||||
return nil
|
var fields []string
|
||||||
|
return fields
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddedField returns the numeric value that was incremented/decremented on a field
|
// AddedField returns the numeric value that was incremented/decremented on a field
|
||||||
// with the given name. The second boolean return value indicates that this field
|
// with the given name. The second boolean return value indicates that this field
|
||||||
// was not set, or was not defined in the schema.
|
// was not set, or was not defined in the schema.
|
||||||
func (m *PasswordTokenMutation) AddedField(name string) (ent.Value, bool) {
|
func (m *PasswordTokenMutation) AddedField(name string) (ent.Value, bool) {
|
||||||
|
switch name {
|
||||||
|
}
|
||||||
return nil, false
|
return nil, false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -395,6 +436,9 @@ func (m *PasswordTokenMutation) ResetField(name string) error {
|
||||||
case passwordtoken.FieldHash:
|
case passwordtoken.FieldHash:
|
||||||
m.ResetHash()
|
m.ResetHash()
|
||||||
return nil
|
return nil
|
||||||
|
case passwordtoken.FieldUserID:
|
||||||
|
m.ResetUserID()
|
||||||
|
return nil
|
||||||
case passwordtoken.FieldCreatedAt:
|
case passwordtoken.FieldCreatedAt:
|
||||||
m.ResetCreatedAt()
|
m.ResetCreatedAt()
|
||||||
return nil
|
return nil
|
||||||
|
|
|
||||||
|
|
@ -20,13 +20,14 @@ type PasswordToken struct {
|
||||||
ID int `json:"id,omitempty"`
|
ID int `json:"id,omitempty"`
|
||||||
// Hash holds the value of the "hash" field.
|
// Hash holds the value of the "hash" field.
|
||||||
Hash string `json:"-"`
|
Hash string `json:"-"`
|
||||||
|
// UserID holds the value of the "user_id" field.
|
||||||
|
UserID int `json:"user_id,omitempty"`
|
||||||
// CreatedAt holds the value of the "created_at" field.
|
// CreatedAt holds the value of the "created_at" field.
|
||||||
CreatedAt time.Time `json:"created_at,omitempty"`
|
CreatedAt time.Time `json:"created_at,omitempty"`
|
||||||
// Edges holds the relations/edges for other nodes in the graph.
|
// Edges holds the relations/edges for other nodes in the graph.
|
||||||
// The values are being populated by the PasswordTokenQuery when eager-loading is set.
|
// The values are being populated by the PasswordTokenQuery when eager-loading is set.
|
||||||
Edges PasswordTokenEdges `json:"edges"`
|
Edges PasswordTokenEdges `json:"edges"`
|
||||||
password_token_user *int
|
selectValues sql.SelectValues
|
||||||
selectValues sql.SelectValues
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// PasswordTokenEdges holds the relations/edges for other nodes in the graph.
|
// PasswordTokenEdges holds the relations/edges for other nodes in the graph.
|
||||||
|
|
@ -54,14 +55,12 @@ func (*PasswordToken) scanValues(columns []string) ([]any, error) {
|
||||||
values := make([]any, len(columns))
|
values := make([]any, len(columns))
|
||||||
for i := range columns {
|
for i := range columns {
|
||||||
switch columns[i] {
|
switch columns[i] {
|
||||||
case passwordtoken.FieldID:
|
case passwordtoken.FieldID, passwordtoken.FieldUserID:
|
||||||
values[i] = new(sql.NullInt64)
|
values[i] = new(sql.NullInt64)
|
||||||
case passwordtoken.FieldHash:
|
case passwordtoken.FieldHash:
|
||||||
values[i] = new(sql.NullString)
|
values[i] = new(sql.NullString)
|
||||||
case passwordtoken.FieldCreatedAt:
|
case passwordtoken.FieldCreatedAt:
|
||||||
values[i] = new(sql.NullTime)
|
values[i] = new(sql.NullTime)
|
||||||
case passwordtoken.ForeignKeys[0]: // password_token_user
|
|
||||||
values[i] = new(sql.NullInt64)
|
|
||||||
default:
|
default:
|
||||||
values[i] = new(sql.UnknownType)
|
values[i] = new(sql.UnknownType)
|
||||||
}
|
}
|
||||||
|
|
@ -89,19 +88,18 @@ func (pt *PasswordToken) assignValues(columns []string, values []any) error {
|
||||||
} else if value.Valid {
|
} else if value.Valid {
|
||||||
pt.Hash = value.String
|
pt.Hash = value.String
|
||||||
}
|
}
|
||||||
|
case passwordtoken.FieldUserID:
|
||||||
|
if value, ok := values[i].(*sql.NullInt64); !ok {
|
||||||
|
return fmt.Errorf("unexpected type %T for field user_id", values[i])
|
||||||
|
} else if value.Valid {
|
||||||
|
pt.UserID = int(value.Int64)
|
||||||
|
}
|
||||||
case passwordtoken.FieldCreatedAt:
|
case passwordtoken.FieldCreatedAt:
|
||||||
if value, ok := values[i].(*sql.NullTime); !ok {
|
if value, ok := values[i].(*sql.NullTime); !ok {
|
||||||
return fmt.Errorf("unexpected type %T for field created_at", values[i])
|
return fmt.Errorf("unexpected type %T for field created_at", values[i])
|
||||||
} else if value.Valid {
|
} else if value.Valid {
|
||||||
pt.CreatedAt = value.Time
|
pt.CreatedAt = value.Time
|
||||||
}
|
}
|
||||||
case passwordtoken.ForeignKeys[0]:
|
|
||||||
if value, ok := values[i].(*sql.NullInt64); !ok {
|
|
||||||
return fmt.Errorf("unexpected type %T for edge-field password_token_user", value)
|
|
||||||
} else if value.Valid {
|
|
||||||
pt.password_token_user = new(int)
|
|
||||||
*pt.password_token_user = int(value.Int64)
|
|
||||||
}
|
|
||||||
default:
|
default:
|
||||||
pt.selectValues.Set(columns[i], values[i])
|
pt.selectValues.Set(columns[i], values[i])
|
||||||
}
|
}
|
||||||
|
|
@ -145,6 +143,9 @@ func (pt *PasswordToken) String() string {
|
||||||
builder.WriteString(fmt.Sprintf("id=%v, ", pt.ID))
|
builder.WriteString(fmt.Sprintf("id=%v, ", pt.ID))
|
||||||
builder.WriteString("hash=<sensitive>")
|
builder.WriteString("hash=<sensitive>")
|
||||||
builder.WriteString(", ")
|
builder.WriteString(", ")
|
||||||
|
builder.WriteString("user_id=")
|
||||||
|
builder.WriteString(fmt.Sprintf("%v", pt.UserID))
|
||||||
|
builder.WriteString(", ")
|
||||||
builder.WriteString("created_at=")
|
builder.WriteString("created_at=")
|
||||||
builder.WriteString(pt.CreatedAt.Format(time.ANSIC))
|
builder.WriteString(pt.CreatedAt.Format(time.ANSIC))
|
||||||
builder.WriteByte(')')
|
builder.WriteByte(')')
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,8 @@ const (
|
||||||
FieldID = "id"
|
FieldID = "id"
|
||||||
// FieldHash holds the string denoting the hash field in the database.
|
// FieldHash holds the string denoting the hash field in the database.
|
||||||
FieldHash = "hash"
|
FieldHash = "hash"
|
||||||
|
// FieldUserID holds the string denoting the user_id field in the database.
|
||||||
|
FieldUserID = "user_id"
|
||||||
// FieldCreatedAt holds the string denoting the created_at field in the database.
|
// FieldCreatedAt holds the string denoting the created_at field in the database.
|
||||||
FieldCreatedAt = "created_at"
|
FieldCreatedAt = "created_at"
|
||||||
// EdgeUser holds the string denoting the user edge name in mutations.
|
// EdgeUser holds the string denoting the user edge name in mutations.
|
||||||
|
|
@ -28,22 +30,17 @@ const (
|
||||||
// It exists in this package in order to avoid circular dependency with the "user" package.
|
// It exists in this package in order to avoid circular dependency with the "user" package.
|
||||||
UserInverseTable = "users"
|
UserInverseTable = "users"
|
||||||
// UserColumn is the table column denoting the user relation/edge.
|
// UserColumn is the table column denoting the user relation/edge.
|
||||||
UserColumn = "password_token_user"
|
UserColumn = "user_id"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Columns holds all SQL columns for passwordtoken fields.
|
// Columns holds all SQL columns for passwordtoken fields.
|
||||||
var Columns = []string{
|
var Columns = []string{
|
||||||
FieldID,
|
FieldID,
|
||||||
FieldHash,
|
FieldHash,
|
||||||
|
FieldUserID,
|
||||||
FieldCreatedAt,
|
FieldCreatedAt,
|
||||||
}
|
}
|
||||||
|
|
||||||
// ForeignKeys holds the SQL foreign-keys that are owned by the "password_tokens"
|
|
||||||
// table and are not defined as standalone fields in the schema.
|
|
||||||
var ForeignKeys = []string{
|
|
||||||
"password_token_user",
|
|
||||||
}
|
|
||||||
|
|
||||||
// ValidColumn reports if the column name is valid (part of the table columns).
|
// ValidColumn reports if the column name is valid (part of the table columns).
|
||||||
func ValidColumn(column string) bool {
|
func ValidColumn(column string) bool {
|
||||||
for i := range Columns {
|
for i := range Columns {
|
||||||
|
|
@ -51,11 +48,6 @@ func ValidColumn(column string) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for i := range ForeignKeys {
|
|
||||||
if column == ForeignKeys[i] {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -79,6 +71,11 @@ func ByHash(opts ...sql.OrderTermOption) OrderOption {
|
||||||
return sql.OrderByField(FieldHash, opts...).ToFunc()
|
return sql.OrderByField(FieldHash, opts...).ToFunc()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ByUserID orders the results by the user_id field.
|
||||||
|
func ByUserID(opts ...sql.OrderTermOption) OrderOption {
|
||||||
|
return sql.OrderByField(FieldUserID, opts...).ToFunc()
|
||||||
|
}
|
||||||
|
|
||||||
// ByCreatedAt orders the results by the created_at field.
|
// ByCreatedAt orders the results by the created_at field.
|
||||||
func ByCreatedAt(opts ...sql.OrderTermOption) OrderOption {
|
func ByCreatedAt(opts ...sql.OrderTermOption) OrderOption {
|
||||||
return sql.OrderByField(FieldCreatedAt, opts...).ToFunc()
|
return sql.OrderByField(FieldCreatedAt, opts...).ToFunc()
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,11 @@ func Hash(v string) predicate.PasswordToken {
|
||||||
return predicate.PasswordToken(sql.FieldEQ(FieldHash, v))
|
return predicate.PasswordToken(sql.FieldEQ(FieldHash, v))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UserID applies equality check predicate on the "user_id" field. It's identical to UserIDEQ.
|
||||||
|
func UserID(v int) predicate.PasswordToken {
|
||||||
|
return predicate.PasswordToken(sql.FieldEQ(FieldUserID, v))
|
||||||
|
}
|
||||||
|
|
||||||
// CreatedAt applies equality check predicate on the "created_at" field. It's identical to CreatedAtEQ.
|
// CreatedAt applies equality check predicate on the "created_at" field. It's identical to CreatedAtEQ.
|
||||||
func CreatedAt(v time.Time) predicate.PasswordToken {
|
func CreatedAt(v time.Time) predicate.PasswordToken {
|
||||||
return predicate.PasswordToken(sql.FieldEQ(FieldCreatedAt, v))
|
return predicate.PasswordToken(sql.FieldEQ(FieldCreatedAt, v))
|
||||||
|
|
@ -130,6 +135,26 @@ func HashContainsFold(v string) predicate.PasswordToken {
|
||||||
return predicate.PasswordToken(sql.FieldContainsFold(FieldHash, v))
|
return predicate.PasswordToken(sql.FieldContainsFold(FieldHash, v))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UserIDEQ applies the EQ predicate on the "user_id" field.
|
||||||
|
func UserIDEQ(v int) predicate.PasswordToken {
|
||||||
|
return predicate.PasswordToken(sql.FieldEQ(FieldUserID, v))
|
||||||
|
}
|
||||||
|
|
||||||
|
// UserIDNEQ applies the NEQ predicate on the "user_id" field.
|
||||||
|
func UserIDNEQ(v int) predicate.PasswordToken {
|
||||||
|
return predicate.PasswordToken(sql.FieldNEQ(FieldUserID, v))
|
||||||
|
}
|
||||||
|
|
||||||
|
// UserIDIn applies the In predicate on the "user_id" field.
|
||||||
|
func UserIDIn(vs ...int) predicate.PasswordToken {
|
||||||
|
return predicate.PasswordToken(sql.FieldIn(FieldUserID, vs...))
|
||||||
|
}
|
||||||
|
|
||||||
|
// UserIDNotIn applies the NotIn predicate on the "user_id" field.
|
||||||
|
func UserIDNotIn(vs ...int) predicate.PasswordToken {
|
||||||
|
return predicate.PasswordToken(sql.FieldNotIn(FieldUserID, vs...))
|
||||||
|
}
|
||||||
|
|
||||||
// CreatedAtEQ applies the EQ predicate on the "created_at" field.
|
// CreatedAtEQ applies the EQ predicate on the "created_at" field.
|
||||||
func CreatedAtEQ(v time.Time) predicate.PasswordToken {
|
func CreatedAtEQ(v time.Time) predicate.PasswordToken {
|
||||||
return predicate.PasswordToken(sql.FieldEQ(FieldCreatedAt, v))
|
return predicate.PasswordToken(sql.FieldEQ(FieldCreatedAt, v))
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,12 @@ func (ptc *PasswordTokenCreate) SetHash(s string) *PasswordTokenCreate {
|
||||||
return ptc
|
return ptc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetUserID sets the "user_id" field.
|
||||||
|
func (ptc *PasswordTokenCreate) SetUserID(i int) *PasswordTokenCreate {
|
||||||
|
ptc.mutation.SetUserID(i)
|
||||||
|
return ptc
|
||||||
|
}
|
||||||
|
|
||||||
// SetCreatedAt sets the "created_at" field.
|
// SetCreatedAt sets the "created_at" field.
|
||||||
func (ptc *PasswordTokenCreate) SetCreatedAt(t time.Time) *PasswordTokenCreate {
|
func (ptc *PasswordTokenCreate) SetCreatedAt(t time.Time) *PasswordTokenCreate {
|
||||||
ptc.mutation.SetCreatedAt(t)
|
ptc.mutation.SetCreatedAt(t)
|
||||||
|
|
@ -41,12 +47,6 @@ func (ptc *PasswordTokenCreate) SetNillableCreatedAt(t *time.Time) *PasswordToke
|
||||||
return ptc
|
return ptc
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetUserID sets the "user" edge to the User entity by ID.
|
|
||||||
func (ptc *PasswordTokenCreate) SetUserID(id int) *PasswordTokenCreate {
|
|
||||||
ptc.mutation.SetUserID(id)
|
|
||||||
return ptc
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetUser sets the "user" edge to the User entity.
|
// SetUser sets the "user" edge to the User entity.
|
||||||
func (ptc *PasswordTokenCreate) SetUser(u *User) *PasswordTokenCreate {
|
func (ptc *PasswordTokenCreate) SetUser(u *User) *PasswordTokenCreate {
|
||||||
return ptc.SetUserID(u.ID)
|
return ptc.SetUserID(u.ID)
|
||||||
|
|
@ -103,6 +103,9 @@ func (ptc *PasswordTokenCreate) check() error {
|
||||||
return &ValidationError{Name: "hash", err: fmt.Errorf(`ent: validator failed for field "PasswordToken.hash": %w`, err)}
|
return &ValidationError{Name: "hash", err: fmt.Errorf(`ent: validator failed for field "PasswordToken.hash": %w`, err)}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if _, ok := ptc.mutation.UserID(); !ok {
|
||||||
|
return &ValidationError{Name: "user_id", err: errors.New(`ent: missing required field "PasswordToken.user_id"`)}
|
||||||
|
}
|
||||||
if _, ok := ptc.mutation.CreatedAt(); !ok {
|
if _, ok := ptc.mutation.CreatedAt(); !ok {
|
||||||
return &ValidationError{Name: "created_at", err: errors.New(`ent: missing required field "PasswordToken.created_at"`)}
|
return &ValidationError{Name: "created_at", err: errors.New(`ent: missing required field "PasswordToken.created_at"`)}
|
||||||
}
|
}
|
||||||
|
|
@ -157,7 +160,7 @@ func (ptc *PasswordTokenCreate) createSpec() (*PasswordToken, *sqlgraph.CreateSp
|
||||||
for _, k := range nodes {
|
for _, k := range nodes {
|
||||||
edge.Target.Nodes = append(edge.Target.Nodes, k)
|
edge.Target.Nodes = append(edge.Target.Nodes, k)
|
||||||
}
|
}
|
||||||
_node.password_token_user = &nodes[0]
|
_node.UserID = nodes[0]
|
||||||
_spec.Edges = append(_spec.Edges, edge)
|
_spec.Edges = append(_spec.Edges, edge)
|
||||||
}
|
}
|
||||||
return _node, _spec
|
return _node, _spec
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,6 @@ type PasswordTokenQuery struct {
|
||||||
inters []Interceptor
|
inters []Interceptor
|
||||||
predicates []predicate.PasswordToken
|
predicates []predicate.PasswordToken
|
||||||
withUser *UserQuery
|
withUser *UserQuery
|
||||||
withFKs bool
|
|
||||||
// intermediate query (i.e. traversal path).
|
// intermediate query (i.e. traversal path).
|
||||||
sql *sql.Selector
|
sql *sql.Selector
|
||||||
path func(context.Context) (*sql.Selector, error)
|
path func(context.Context) (*sql.Selector, error)
|
||||||
|
|
@ -370,18 +369,11 @@ func (ptq *PasswordTokenQuery) prepareQuery(ctx context.Context) error {
|
||||||
func (ptq *PasswordTokenQuery) sqlAll(ctx context.Context, hooks ...queryHook) ([]*PasswordToken, error) {
|
func (ptq *PasswordTokenQuery) sqlAll(ctx context.Context, hooks ...queryHook) ([]*PasswordToken, error) {
|
||||||
var (
|
var (
|
||||||
nodes = []*PasswordToken{}
|
nodes = []*PasswordToken{}
|
||||||
withFKs = ptq.withFKs
|
|
||||||
_spec = ptq.querySpec()
|
_spec = ptq.querySpec()
|
||||||
loadedTypes = [1]bool{
|
loadedTypes = [1]bool{
|
||||||
ptq.withUser != nil,
|
ptq.withUser != nil,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
if ptq.withUser != nil {
|
|
||||||
withFKs = true
|
|
||||||
}
|
|
||||||
if withFKs {
|
|
||||||
_spec.Node.Columns = append(_spec.Node.Columns, passwordtoken.ForeignKeys...)
|
|
||||||
}
|
|
||||||
_spec.ScanValues = func(columns []string) ([]any, error) {
|
_spec.ScanValues = func(columns []string) ([]any, error) {
|
||||||
return (*PasswordToken).scanValues(nil, columns)
|
return (*PasswordToken).scanValues(nil, columns)
|
||||||
}
|
}
|
||||||
|
|
@ -413,10 +405,7 @@ func (ptq *PasswordTokenQuery) loadUser(ctx context.Context, query *UserQuery, n
|
||||||
ids := make([]int, 0, len(nodes))
|
ids := make([]int, 0, len(nodes))
|
||||||
nodeids := make(map[int][]*PasswordToken)
|
nodeids := make(map[int][]*PasswordToken)
|
||||||
for i := range nodes {
|
for i := range nodes {
|
||||||
if nodes[i].password_token_user == nil {
|
fk := nodes[i].UserID
|
||||||
continue
|
|
||||||
}
|
|
||||||
fk := *nodes[i].password_token_user
|
|
||||||
if _, ok := nodeids[fk]; !ok {
|
if _, ok := nodeids[fk]; !ok {
|
||||||
ids = append(ids, fk)
|
ids = append(ids, fk)
|
||||||
}
|
}
|
||||||
|
|
@ -433,7 +422,7 @@ func (ptq *PasswordTokenQuery) loadUser(ctx context.Context, query *UserQuery, n
|
||||||
for _, n := range neighbors {
|
for _, n := range neighbors {
|
||||||
nodes, ok := nodeids[n.ID]
|
nodes, ok := nodeids[n.ID]
|
||||||
if !ok {
|
if !ok {
|
||||||
return fmt.Errorf(`unexpected foreign-key "password_token_user" returned %v`, n.ID)
|
return fmt.Errorf(`unexpected foreign-key "user_id" returned %v`, n.ID)
|
||||||
}
|
}
|
||||||
for i := range nodes {
|
for i := range nodes {
|
||||||
assign(nodes[i], n)
|
assign(nodes[i], n)
|
||||||
|
|
@ -467,6 +456,9 @@ func (ptq *PasswordTokenQuery) querySpec() *sqlgraph.QuerySpec {
|
||||||
_spec.Node.Columns = append(_spec.Node.Columns, fields[i])
|
_spec.Node.Columns = append(_spec.Node.Columns, fields[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ptq.withUser != nil {
|
||||||
|
_spec.Node.AddColumnOnce(passwordtoken.FieldUserID)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if ps := ptq.predicates; len(ps) > 0 {
|
if ps := ptq.predicates; len(ps) > 0 {
|
||||||
_spec.Predicate = func(selector *sql.Selector) {
|
_spec.Predicate = func(selector *sql.Selector) {
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,20 @@ func (ptu *PasswordTokenUpdate) SetNillableHash(s *string) *PasswordTokenUpdate
|
||||||
return ptu
|
return ptu
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetUserID sets the "user_id" field.
|
||||||
|
func (ptu *PasswordTokenUpdate) SetUserID(i int) *PasswordTokenUpdate {
|
||||||
|
ptu.mutation.SetUserID(i)
|
||||||
|
return ptu
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetNillableUserID sets the "user_id" field if the given value is not nil.
|
||||||
|
func (ptu *PasswordTokenUpdate) SetNillableUserID(i *int) *PasswordTokenUpdate {
|
||||||
|
if i != nil {
|
||||||
|
ptu.SetUserID(*i)
|
||||||
|
}
|
||||||
|
return ptu
|
||||||
|
}
|
||||||
|
|
||||||
// SetCreatedAt sets the "created_at" field.
|
// SetCreatedAt sets the "created_at" field.
|
||||||
func (ptu *PasswordTokenUpdate) SetCreatedAt(t time.Time) *PasswordTokenUpdate {
|
func (ptu *PasswordTokenUpdate) SetCreatedAt(t time.Time) *PasswordTokenUpdate {
|
||||||
ptu.mutation.SetCreatedAt(t)
|
ptu.mutation.SetCreatedAt(t)
|
||||||
|
|
@ -57,12 +71,6 @@ func (ptu *PasswordTokenUpdate) SetNillableCreatedAt(t *time.Time) *PasswordToke
|
||||||
return ptu
|
return ptu
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetUserID sets the "user" edge to the User entity by ID.
|
|
||||||
func (ptu *PasswordTokenUpdate) SetUserID(id int) *PasswordTokenUpdate {
|
|
||||||
ptu.mutation.SetUserID(id)
|
|
||||||
return ptu
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetUser sets the "user" edge to the User entity.
|
// SetUser sets the "user" edge to the User entity.
|
||||||
func (ptu *PasswordTokenUpdate) SetUser(u *User) *PasswordTokenUpdate {
|
func (ptu *PasswordTokenUpdate) SetUser(u *User) *PasswordTokenUpdate {
|
||||||
return ptu.SetUserID(u.ID)
|
return ptu.SetUserID(u.ID)
|
||||||
|
|
@ -200,6 +208,20 @@ func (ptuo *PasswordTokenUpdateOne) SetNillableHash(s *string) *PasswordTokenUpd
|
||||||
return ptuo
|
return ptuo
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetUserID sets the "user_id" field.
|
||||||
|
func (ptuo *PasswordTokenUpdateOne) SetUserID(i int) *PasswordTokenUpdateOne {
|
||||||
|
ptuo.mutation.SetUserID(i)
|
||||||
|
return ptuo
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetNillableUserID sets the "user_id" field if the given value is not nil.
|
||||||
|
func (ptuo *PasswordTokenUpdateOne) SetNillableUserID(i *int) *PasswordTokenUpdateOne {
|
||||||
|
if i != nil {
|
||||||
|
ptuo.SetUserID(*i)
|
||||||
|
}
|
||||||
|
return ptuo
|
||||||
|
}
|
||||||
|
|
||||||
// SetCreatedAt sets the "created_at" field.
|
// SetCreatedAt sets the "created_at" field.
|
||||||
func (ptuo *PasswordTokenUpdateOne) SetCreatedAt(t time.Time) *PasswordTokenUpdateOne {
|
func (ptuo *PasswordTokenUpdateOne) SetCreatedAt(t time.Time) *PasswordTokenUpdateOne {
|
||||||
ptuo.mutation.SetCreatedAt(t)
|
ptuo.mutation.SetCreatedAt(t)
|
||||||
|
|
@ -214,12 +236,6 @@ func (ptuo *PasswordTokenUpdateOne) SetNillableCreatedAt(t *time.Time) *Password
|
||||||
return ptuo
|
return ptuo
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetUserID sets the "user" edge to the User entity by ID.
|
|
||||||
func (ptuo *PasswordTokenUpdateOne) SetUserID(id int) *PasswordTokenUpdateOne {
|
|
||||||
ptuo.mutation.SetUserID(id)
|
|
||||||
return ptuo
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetUser sets the "user" edge to the User entity.
|
// SetUser sets the "user" edge to the User entity.
|
||||||
func (ptuo *PasswordTokenUpdateOne) SetUser(u *User) *PasswordTokenUpdateOne {
|
func (ptuo *PasswordTokenUpdateOne) SetUser(u *User) *PasswordTokenUpdateOne {
|
||||||
return ptuo.SetUserID(u.ID)
|
return ptuo.SetUserID(u.ID)
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ func init() {
|
||||||
// passwordtoken.HashValidator is a validator for the "hash" field. It is called by the builders before save.
|
// passwordtoken.HashValidator is a validator for the "hash" field. It is called by the builders before save.
|
||||||
passwordtoken.HashValidator = passwordtokenDescHash.Validators[0].(func(string) error)
|
passwordtoken.HashValidator = passwordtokenDescHash.Validators[0].(func(string) error)
|
||||||
// passwordtokenDescCreatedAt is the schema descriptor for created_at field.
|
// passwordtokenDescCreatedAt is the schema descriptor for created_at field.
|
||||||
passwordtokenDescCreatedAt := passwordtokenFields[1].Descriptor()
|
passwordtokenDescCreatedAt := passwordtokenFields[2].Descriptor()
|
||||||
// passwordtoken.DefaultCreatedAt holds the default value on creation for the created_at field.
|
// passwordtoken.DefaultCreatedAt holds the default value on creation for the created_at field.
|
||||||
passwordtoken.DefaultCreatedAt = passwordtokenDescCreatedAt.Default.(func() time.Time)
|
passwordtoken.DefaultCreatedAt = passwordtokenDescCreatedAt.Default.(func() time.Time)
|
||||||
userHooks := schema.User{}.Hooks()
|
userHooks := schema.User{}.Hooks()
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ func (PasswordToken) Fields() []ent.Field {
|
||||||
field.String("hash").
|
field.String("hash").
|
||||||
Sensitive().
|
Sensitive().
|
||||||
NotEmpty(),
|
NotEmpty(),
|
||||||
|
field.Int("user_id"),
|
||||||
field.Time("created_at").
|
field.Time("created_at").
|
||||||
Default(time.Now),
|
Default(time.Now),
|
||||||
}
|
}
|
||||||
|
|
@ -28,6 +29,7 @@ func (PasswordToken) Fields() []ent.Field {
|
||||||
func (PasswordToken) Edges() []ent.Edge {
|
func (PasswordToken) Edges() []ent.Edge {
|
||||||
return []ent.Edge{
|
return []ent.Edge{
|
||||||
edge.To("user", User.Type).
|
edge.To("user", User.Type).
|
||||||
|
Field("user_id").
|
||||||
Required().
|
Required().
|
||||||
Unique(),
|
Unique(),
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ const (
|
||||||
// It exists in this package in order to avoid circular dependency with the "passwordtoken" package.
|
// It exists in this package in order to avoid circular dependency with the "passwordtoken" package.
|
||||||
OwnerInverseTable = "password_tokens"
|
OwnerInverseTable = "password_tokens"
|
||||||
// OwnerColumn is the table column denoting the owner relation/edge.
|
// OwnerColumn is the table column denoting the owner relation/edge.
|
||||||
OwnerColumn = "password_token_user"
|
OwnerColumn = "user_id"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Columns holds all SQL columns for user fields.
|
// Columns holds all SQL columns for user fields.
|
||||||
|
|
|
||||||
|
|
@ -413,7 +413,9 @@ func (uq *UserQuery) loadOwner(ctx context.Context, query *PasswordTokenQuery, n
|
||||||
init(nodes[i])
|
init(nodes[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
query.withFKs = true
|
if len(query.ctx.Fields) > 0 {
|
||||||
|
query.ctx.AppendFieldOnce(passwordtoken.FieldUserID)
|
||||||
|
}
|
||||||
query.Where(predicate.PasswordToken(func(s *sql.Selector) {
|
query.Where(predicate.PasswordToken(func(s *sql.Selector) {
|
||||||
s.Where(sql.InValues(s.C(user.OwnerColumn), fks...))
|
s.Where(sql.InValues(s.C(user.OwnerColumn), fks...))
|
||||||
}))
|
}))
|
||||||
|
|
@ -422,13 +424,10 @@ func (uq *UserQuery) loadOwner(ctx context.Context, query *PasswordTokenQuery, n
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
for _, n := range neighbors {
|
for _, n := range neighbors {
|
||||||
fk := n.password_token_user
|
fk := n.UserID
|
||||||
if fk == nil {
|
node, ok := nodeids[fk]
|
||||||
return fmt.Errorf(`foreign-key "password_token_user" is nil for node %v`, n.ID)
|
|
||||||
}
|
|
||||||
node, ok := nodeids[*fk]
|
|
||||||
if !ok {
|
if !ok {
|
||||||
return fmt.Errorf(`unexpected referenced foreign-key "password_token_user" returned %v for node %v`, *fk, n.ID)
|
return fmt.Errorf(`unexpected referenced foreign-key "user_id" returned %v for node %v`, fk, n.ID)
|
||||||
}
|
}
|
||||||
assign(node, n)
|
assign(node, n)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package handlers
|
package handlers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
@ -76,9 +75,9 @@ func (h *Admin) middlewareEntityLoad(n *gen.Type) echo.MiddlewareFunc {
|
||||||
switch {
|
switch {
|
||||||
case err == nil:
|
case err == nil:
|
||||||
ctx.Set(entityIDContextKey, id)
|
ctx.Set(entityIDContextKey, id)
|
||||||
//ctx.Set(entityContextKey, entity) // TODO
|
//ctx.Set(entityContextKey, entityValues)
|
||||||
return next(ctx)
|
return next(ctx)
|
||||||
case errors.Is(err, new(ent.NotFoundError)):
|
case ent.IsNotFound(err):
|
||||||
return echo.NewHTTPError(http.StatusNotFound, "entity not found")
|
return echo.NewHTTPError(http.StatusNotFound, "entity not found")
|
||||||
default:
|
default:
|
||||||
return echo.NewHTTPError(http.StatusInternalServerError, err)
|
return echo.NewHTTPError(http.StatusInternalServerError, err)
|
||||||
|
|
@ -91,7 +90,7 @@ func (h *Admin) EntityList(n *gen.Type) echo.HandlerFunc {
|
||||||
return func(ctx echo.Context) error {
|
return func(ctx echo.Context) error {
|
||||||
list, err := h.admin.List(ctx, n.Name)
|
list, err := h.admin.List(ctx, n.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return echo.NewHTTPError(http.StatusInternalServerError, err.Error())
|
return echo.NewHTTPError(http.StatusInternalServerError, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return pages.AdminEntityList(ctx, pages.AdminEntityListParams{
|
return pages.AdminEntityList(ctx, pages.AdminEntityListParams{
|
||||||
|
|
@ -125,12 +124,13 @@ func (h *Admin) EntityAddSubmit(n *gen.Type) echo.HandlerFunc {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//func (h *Admin) EntityEdit(n *gen.Type) echo.HandlerFunc {
|
||||||
//func (h *Admin) EntityEdit(p AdminEntityPlugin) echo.HandlerFunc {
|
|
||||||
// return func(ctx echo.Context) error {
|
// return func(ctx echo.Context) error {
|
||||||
// return nil
|
// v := ctx.Get(entityContextKey).(map[string][]string)
|
||||||
|
// return pages.AdminEntityForm(ctx, h.getEntitySchema(n), v)
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
|
|
||||||
//
|
//
|
||||||
//func (h *Admin) EntityEditSubmit(p AdminEntityPlugin) echo.HandlerFunc {
|
//func (h *Admin) EntityEditSubmit(p AdminEntityPlugin) echo.HandlerFunc {
|
||||||
// return func(ctx echo.Context) error {
|
// return func(ctx echo.Context) error {
|
||||||
|
|
|
||||||
|
|
@ -65,6 +65,7 @@ func AdminEntityForm(ctx echo.Context, schema *load.Schema, values url.Values) e
|
||||||
|
|
||||||
for _, f := range schema.Fields {
|
for _, f := range schema.Fields {
|
||||||
// TODO cardinality?
|
// TODO cardinality?
|
||||||
|
// TODO optional fields?
|
||||||
switch f.Info.Type {
|
switch f.Info.Type {
|
||||||
case field.TypeString:
|
case field.TypeString:
|
||||||
nodes = append(nodes, InputField(InputFieldParams{
|
nodes = append(nodes, InputField(InputFieldParams{
|
||||||
|
|
@ -74,6 +75,7 @@ func AdminEntityForm(ctx echo.Context, schema *load.Schema, values url.Values) e
|
||||||
Value: getValue(f.Name),
|
Value: getValue(f.Name),
|
||||||
}))
|
}))
|
||||||
case field.TypeTime:
|
case field.TypeTime:
|
||||||
|
// todo make this easier
|
||||||
nodes = append(nodes, InputField(InputFieldParams{
|
nodes = append(nodes, InputField(InputFieldParams{
|
||||||
Name: f.Name,
|
Name: f.Name,
|
||||||
InputType: "text",
|
InputType: "text",
|
||||||
|
|
@ -81,6 +83,13 @@ func AdminEntityForm(ctx echo.Context, schema *load.Schema, values url.Values) e
|
||||||
Help: fmt.Sprintf("Use the following format: %s", time.Now().Format(time.RFC3339)),
|
Help: fmt.Sprintf("Use the following format: %s", time.Now().Format(time.RFC3339)),
|
||||||
Value: getValue(f.Name),
|
Value: getValue(f.Name),
|
||||||
}))
|
}))
|
||||||
|
case field.TypeInt:
|
||||||
|
nodes = append(nodes, InputField(InputFieldParams{
|
||||||
|
Name: f.Name,
|
||||||
|
InputType: "number",
|
||||||
|
Label: label(f.Name),
|
||||||
|
Value: getValue(f.Name),
|
||||||
|
}))
|
||||||
case field.TypeBool:
|
case field.TypeBool:
|
||||||
// TODO
|
// TODO
|
||||||
nodes = append(nodes, P(Textf("%s not supported", f.Name)))
|
nodes = append(nodes, P(Textf("%s not supported", f.Name)))
|
||||||
|
|
@ -93,17 +102,17 @@ func AdminEntityForm(ctx echo.Context, schema *load.Schema, values url.Values) e
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, e := range schema.Edges {
|
//for _, e := range schema.Edges {
|
||||||
if e.Inverse {
|
// if e.Inverse {
|
||||||
continue
|
// continue
|
||||||
}
|
// }
|
||||||
nodes = append(nodes, InputField(InputFieldParams{
|
// nodes = append(nodes, InputField(InputFieldParams{
|
||||||
Name: e.Name,
|
// Name: e.Name,
|
||||||
InputType: "number",
|
// InputType: "number",
|
||||||
Label: label(e.Name),
|
// Label: label(e.Name),
|
||||||
Value: getValue(e.Name), // TODO load does not load this
|
// Value: getValue(e.Name), // TODO load does not load this
|
||||||
}))
|
// }))
|
||||||
}
|
//}
|
||||||
|
|
||||||
nodes = append(nodes, ControlGroup(
|
nodes = append(nodes, ControlGroup(
|
||||||
FormButton("is-primary", "Submit"),
|
FormButton("is-primary", "Submit"),
|
||||||
|
|
@ -148,8 +157,19 @@ func AdminEntityList(ctx echo.Context, params AdminEntityListParams) error {
|
||||||
g = append(g, Td(Text(h)))
|
g = append(g, Td(Text(h)))
|
||||||
}
|
}
|
||||||
g = append(g,
|
g = append(g,
|
||||||
Td(ButtonLink(r.Path(routenames.AdminEntityEdit(params.EntityType.Name), row.ID), "is-link", "Edit")),
|
Td(
|
||||||
Td(ButtonLink(r.Path(routenames.AdminEntityDelete(params.EntityType.Name), row.ID), "is-danger", "Delete")),
|
ButtonLink(
|
||||||
|
r.Path(routenames.AdminEntityEdit(params.EntityType.Name), row.ID),
|
||||||
|
"is-link",
|
||||||
|
"Edit",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Td(
|
||||||
|
ButtonLink(r.Path(routenames.AdminEntityDelete(params.EntityType.Name), row.ID),
|
||||||
|
"is-danger",
|
||||||
|
"Delete",
|
||||||
|
),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
return g
|
return g
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue