1. 新增预警规则、预警消息、业务附件数据库表与CRUD逻辑 2. 为拧紧记录添加审核人、审核时间字段及审核留痕功能 3. 优化产线点位类型与编号描述,更新工位组合下发菜单名称为工艺路线派工 4. 新增上传文件获取原文件名与大小的工具方法 5. 在系统管理菜单新增预警中心与附件中心入口
583 lines
20 KiB
Go
583 lines
20 KiB
Go
// Code generated by ent, DO NOT EDIT.
|
|
|
|
package hook
|
|
|
|
import (
|
|
"bj_power_mes/ent"
|
|
"context"
|
|
"fmt"
|
|
)
|
|
|
|
// The AlertFunc type is an adapter to allow the use of ordinary
|
|
// function as Alert mutator.
|
|
type AlertFunc func(context.Context, *ent.AlertMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f AlertFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.AlertMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.AlertMutation", m)
|
|
}
|
|
|
|
// The AlertRuleFunc type is an adapter to allow the use of ordinary
|
|
// function as AlertRule mutator.
|
|
type AlertRuleFunc func(context.Context, *ent.AlertRuleMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f AlertRuleFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.AlertRuleMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.AlertRuleMutation", m)
|
|
}
|
|
|
|
// The AssociationTraceFunc type is an adapter to allow the use of ordinary
|
|
// function as AssociationTrace mutator.
|
|
type AssociationTraceFunc func(context.Context, *ent.AssociationTraceMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f AssociationTraceFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.AssociationTraceMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.AssociationTraceMutation", m)
|
|
}
|
|
|
|
// The AttachmentFunc type is an adapter to allow the use of ordinary
|
|
// function as Attachment mutator.
|
|
type AttachmentFunc func(context.Context, *ent.AttachmentMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f AttachmentFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.AttachmentMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.AttachmentMutation", m)
|
|
}
|
|
|
|
// The BomItemFunc type is an adapter to allow the use of ordinary
|
|
// function as BomItem mutator.
|
|
type BomItemFunc func(context.Context, *ent.BomItemMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f BomItemFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.BomItemMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.BomItemMutation", m)
|
|
}
|
|
|
|
// The DailyPlanFunc type is an adapter to allow the use of ordinary
|
|
// function as DailyPlan mutator.
|
|
type DailyPlanFunc func(context.Context, *ent.DailyPlanMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f DailyPlanFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.DailyPlanMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.DailyPlanMutation", m)
|
|
}
|
|
|
|
// The EventLogFunc type is an adapter to allow the use of ordinary
|
|
// function as EventLog mutator.
|
|
type EventLogFunc func(context.Context, *ent.EventLogMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f EventLogFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.EventLogMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.EventLogMutation", m)
|
|
}
|
|
|
|
// The InspectionRecordFunc type is an adapter to allow the use of ordinary
|
|
// function as InspectionRecord mutator.
|
|
type InspectionRecordFunc func(context.Context, *ent.InspectionRecordMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f InspectionRecordFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.InspectionRecordMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.InspectionRecordMutation", m)
|
|
}
|
|
|
|
// The LinePointFunc type is an adapter to allow the use of ordinary
|
|
// function as LinePoint mutator.
|
|
type LinePointFunc func(context.Context, *ent.LinePointMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f LinePointFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.LinePointMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.LinePointMutation", m)
|
|
}
|
|
|
|
// The MaterialRequestFunc type is an adapter to allow the use of ordinary
|
|
// function as MaterialRequest mutator.
|
|
type MaterialRequestFunc func(context.Context, *ent.MaterialRequestMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f MaterialRequestFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.MaterialRequestMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.MaterialRequestMutation", m)
|
|
}
|
|
|
|
// The PermissionFunc type is an adapter to allow the use of ordinary
|
|
// function as Permission mutator.
|
|
type PermissionFunc func(context.Context, *ent.PermissionMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f PermissionFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.PermissionMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.PermissionMutation", m)
|
|
}
|
|
|
|
// The PlcMoveCmdFunc type is an adapter to allow the use of ordinary
|
|
// function as PlcMoveCmd mutator.
|
|
type PlcMoveCmdFunc func(context.Context, *ent.PlcMoveCmdMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f PlcMoveCmdFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.PlcMoveCmdMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.PlcMoveCmdMutation", m)
|
|
}
|
|
|
|
// The PlcSendLogFunc type is an adapter to allow the use of ordinary
|
|
// function as PlcSendLog mutator.
|
|
type PlcSendLogFunc func(context.Context, *ent.PlcSendLogMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f PlcSendLogFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.PlcSendLogMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.PlcSendLogMutation", m)
|
|
}
|
|
|
|
// The ProcessFlowFunc type is an adapter to allow the use of ordinary
|
|
// function as ProcessFlow mutator.
|
|
type ProcessFlowFunc func(context.Context, *ent.ProcessFlowMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f ProcessFlowFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.ProcessFlowMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.ProcessFlowMutation", m)
|
|
}
|
|
|
|
// The ProcessRouteFunc type is an adapter to allow the use of ordinary
|
|
// function as ProcessRoute mutator.
|
|
type ProcessRouteFunc func(context.Context, *ent.ProcessRouteMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f ProcessRouteFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.ProcessRouteMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.ProcessRouteMutation", m)
|
|
}
|
|
|
|
// The ProcessStepFunc type is an adapter to allow the use of ordinary
|
|
// function as ProcessStep mutator.
|
|
type ProcessStepFunc func(context.Context, *ent.ProcessStepMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f ProcessStepFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.ProcessStepMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.ProcessStepMutation", m)
|
|
}
|
|
|
|
// The ProductTypeFunc type is an adapter to allow the use of ordinary
|
|
// function as ProductType mutator.
|
|
type ProductTypeFunc func(context.Context, *ent.ProductTypeMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f ProductTypeFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.ProductTypeMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.ProductTypeMutation", m)
|
|
}
|
|
|
|
// The RoleFunc type is an adapter to allow the use of ordinary
|
|
// function as Role mutator.
|
|
type RoleFunc func(context.Context, *ent.RoleMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f RoleFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.RoleMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.RoleMutation", m)
|
|
}
|
|
|
|
// The RouteSegmentFunc type is an adapter to allow the use of ordinary
|
|
// function as RouteSegment mutator.
|
|
type RouteSegmentFunc func(context.Context, *ent.RouteSegmentMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f RouteSegmentFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.RouteSegmentMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.RouteSegmentMutation", m)
|
|
}
|
|
|
|
// The ScanRecordFunc type is an adapter to allow the use of ordinary
|
|
// function as ScanRecord mutator.
|
|
type ScanRecordFunc func(context.Context, *ent.ScanRecordMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f ScanRecordFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.ScanRecordMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.ScanRecordMutation", m)
|
|
}
|
|
|
|
// The SemiFlowFunc type is an adapter to allow the use of ordinary
|
|
// function as SemiFlow mutator.
|
|
type SemiFlowFunc func(context.Context, *ent.SemiFlowMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f SemiFlowFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.SemiFlowMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.SemiFlowMutation", m)
|
|
}
|
|
|
|
// The StationFunc type is an adapter to allow the use of ordinary
|
|
// function as Station mutator.
|
|
type StationFunc func(context.Context, *ent.StationMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f StationFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.StationMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.StationMutation", m)
|
|
}
|
|
|
|
// The StationProcessFunc type is an adapter to allow the use of ordinary
|
|
// function as StationProcess mutator.
|
|
type StationProcessFunc func(context.Context, *ent.StationProcessMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f StationProcessFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.StationProcessMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.StationProcessMutation", m)
|
|
}
|
|
|
|
// The StepCriterionFunc type is an adapter to allow the use of ordinary
|
|
// function as StepCriterion mutator.
|
|
type StepCriterionFunc func(context.Context, *ent.StepCriterionMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f StepCriterionFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.StepCriterionMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.StepCriterionMutation", m)
|
|
}
|
|
|
|
// The StepDataFunc type is an adapter to allow the use of ordinary
|
|
// function as StepData mutator.
|
|
type StepDataFunc func(context.Context, *ent.StepDataMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f StepDataFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.StepDataMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.StepDataMutation", m)
|
|
}
|
|
|
|
// The TorqueAuditLogFunc type is an adapter to allow the use of ordinary
|
|
// function as TorqueAuditLog mutator.
|
|
type TorqueAuditLogFunc func(context.Context, *ent.TorqueAuditLogMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f TorqueAuditLogFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.TorqueAuditLogMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.TorqueAuditLogMutation", m)
|
|
}
|
|
|
|
// The TorqueRecordFunc type is an adapter to allow the use of ordinary
|
|
// function as TorqueRecord mutator.
|
|
type TorqueRecordFunc func(context.Context, *ent.TorqueRecordMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f TorqueRecordFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.TorqueRecordMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.TorqueRecordMutation", m)
|
|
}
|
|
|
|
// The UserFunc type is an adapter to allow the use of ordinary
|
|
// function as User mutator.
|
|
type UserFunc func(context.Context, *ent.UserMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f UserFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.UserMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.UserMutation", m)
|
|
}
|
|
|
|
// The UserStationFunc type is an adapter to allow the use of ordinary
|
|
// function as UserStation mutator.
|
|
type UserStationFunc func(context.Context, *ent.UserStationMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f UserStationFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.UserStationMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.UserStationMutation", m)
|
|
}
|
|
|
|
// The WorkOrderFunc type is an adapter to allow the use of ordinary
|
|
// function as WorkOrder mutator.
|
|
type WorkOrderFunc func(context.Context, *ent.WorkOrderMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f WorkOrderFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.WorkOrderMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.WorkOrderMutation", m)
|
|
}
|
|
|
|
// The WorkpieceFunc type is an adapter to allow the use of ordinary
|
|
// function as Workpiece mutator.
|
|
type WorkpieceFunc func(context.Context, *ent.WorkpieceMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f WorkpieceFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.WorkpieceMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.WorkpieceMutation", m)
|
|
}
|
|
|
|
// The WorkpieceBindFunc type is an adapter to allow the use of ordinary
|
|
// function as WorkpieceBind mutator.
|
|
type WorkpieceBindFunc func(context.Context, *ent.WorkpieceBindMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f WorkpieceBindFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.WorkpieceBindMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.WorkpieceBindMutation", m)
|
|
}
|
|
|
|
// The WorkpieceProcessFunc type is an adapter to allow the use of ordinary
|
|
// function as WorkpieceProcess mutator.
|
|
type WorkpieceProcessFunc func(context.Context, *ent.WorkpieceProcessMutation) (ent.Value, error)
|
|
|
|
// Mutate calls f(ctx, m).
|
|
func (f WorkpieceProcessFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if mv, ok := m.(*ent.WorkpieceProcessMutation); ok {
|
|
return f(ctx, mv)
|
|
}
|
|
return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.WorkpieceProcessMutation", m)
|
|
}
|
|
|
|
// Condition is a hook condition function.
|
|
type Condition func(context.Context, ent.Mutation) bool
|
|
|
|
// And groups conditions with the AND operator.
|
|
func And(first, second Condition, rest ...Condition) Condition {
|
|
return func(ctx context.Context, m ent.Mutation) bool {
|
|
if !first(ctx, m) || !second(ctx, m) {
|
|
return false
|
|
}
|
|
for _, cond := range rest {
|
|
if !cond(ctx, m) {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
}
|
|
|
|
// Or groups conditions with the OR operator.
|
|
func Or(first, second Condition, rest ...Condition) Condition {
|
|
return func(ctx context.Context, m ent.Mutation) bool {
|
|
if first(ctx, m) || second(ctx, m) {
|
|
return true
|
|
}
|
|
for _, cond := range rest {
|
|
if cond(ctx, m) {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
}
|
|
|
|
// Not negates a given condition.
|
|
func Not(cond Condition) Condition {
|
|
return func(ctx context.Context, m ent.Mutation) bool {
|
|
return !cond(ctx, m)
|
|
}
|
|
}
|
|
|
|
// HasOp is a condition testing mutation operation.
|
|
func HasOp(op ent.Op) Condition {
|
|
return func(_ context.Context, m ent.Mutation) bool {
|
|
return m.Op().Is(op)
|
|
}
|
|
}
|
|
|
|
// HasAddedFields is a condition validating `.AddedField` on fields.
|
|
func HasAddedFields(field string, fields ...string) Condition {
|
|
return func(_ context.Context, m ent.Mutation) bool {
|
|
if _, exists := m.AddedField(field); !exists {
|
|
return false
|
|
}
|
|
for _, field := range fields {
|
|
if _, exists := m.AddedField(field); !exists {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
}
|
|
|
|
// HasClearedFields is a condition validating `.FieldCleared` on fields.
|
|
func HasClearedFields(field string, fields ...string) Condition {
|
|
return func(_ context.Context, m ent.Mutation) bool {
|
|
if exists := m.FieldCleared(field); !exists {
|
|
return false
|
|
}
|
|
for _, field := range fields {
|
|
if exists := m.FieldCleared(field); !exists {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
}
|
|
|
|
// HasFields is a condition validating `.Field` on fields.
|
|
func HasFields(field string, fields ...string) Condition {
|
|
return func(_ context.Context, m ent.Mutation) bool {
|
|
if _, exists := m.Field(field); !exists {
|
|
return false
|
|
}
|
|
for _, field := range fields {
|
|
if _, exists := m.Field(field); !exists {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
}
|
|
|
|
// If executes the given hook under condition.
|
|
//
|
|
// hook.If(ComputeAverage, And(HasFields(...), HasAddedFields(...)))
|
|
func If(hk ent.Hook, cond Condition) ent.Hook {
|
|
return func(next ent.Mutator) ent.Mutator {
|
|
return ent.MutateFunc(func(ctx context.Context, m ent.Mutation) (ent.Value, error) {
|
|
if cond(ctx, m) {
|
|
return hk(next).Mutate(ctx, m)
|
|
}
|
|
return next.Mutate(ctx, m)
|
|
})
|
|
}
|
|
}
|
|
|
|
// On executes the given hook only for the given operation.
|
|
//
|
|
// hook.On(Log, ent.Delete|ent.Create)
|
|
func On(hk ent.Hook, op ent.Op) ent.Hook {
|
|
return If(hk, HasOp(op))
|
|
}
|
|
|
|
// Unless skips the given hook only for the given operation.
|
|
//
|
|
// hook.Unless(Log, ent.Update|ent.UpdateOne)
|
|
func Unless(hk ent.Hook, op ent.Op) ent.Hook {
|
|
return If(hk, Not(HasOp(op)))
|
|
}
|
|
|
|
// FixedError is a hook returning a fixed error.
|
|
func FixedError(err error) ent.Hook {
|
|
return func(ent.Mutator) ent.Mutator {
|
|
return ent.MutateFunc(func(context.Context, ent.Mutation) (ent.Value, error) {
|
|
return nil, err
|
|
})
|
|
}
|
|
}
|
|
|
|
// Reject returns a hook that rejects all operations that match op.
|
|
//
|
|
// func (T) Hooks() []ent.Hook {
|
|
// return []ent.Hook{
|
|
// Reject(ent.Delete|ent.Update),
|
|
// }
|
|
// }
|
|
func Reject(op ent.Op) ent.Hook {
|
|
hk := FixedError(fmt.Errorf("%s operation is not allowed", op))
|
|
return On(hk, op)
|
|
}
|
|
|
|
// Chain acts as a list of hooks and is effectively immutable.
|
|
// Once created, it will always hold the same set of hooks in the same order.
|
|
type Chain struct {
|
|
hooks []ent.Hook
|
|
}
|
|
|
|
// NewChain creates a new chain of hooks.
|
|
func NewChain(hooks ...ent.Hook) Chain {
|
|
return Chain{append([]ent.Hook(nil), hooks...)}
|
|
}
|
|
|
|
// Hook chains the list of hooks and returns the final hook.
|
|
func (c Chain) Hook() ent.Hook {
|
|
return func(mutator ent.Mutator) ent.Mutator {
|
|
for i := len(c.hooks) - 1; i >= 0; i-- {
|
|
mutator = c.hooks[i](mutator)
|
|
}
|
|
return mutator
|
|
}
|
|
}
|
|
|
|
// Append extends a chain, adding the specified hook
|
|
// as the last ones in the mutation flow.
|
|
func (c Chain) Append(hooks ...ent.Hook) Chain {
|
|
newHooks := make([]ent.Hook, 0, len(c.hooks)+len(hooks))
|
|
newHooks = append(newHooks, c.hooks...)
|
|
newHooks = append(newHooks, hooks...)
|
|
return Chain{newHooks}
|
|
}
|
|
|
|
// Extend extends a chain, adding the specified chain
|
|
// as the last ones in the mutation flow.
|
|
func (c Chain) Extend(chain Chain) Chain {
|
|
return c.Append(chain.hooks...)
|
|
}
|