github.com/crowdsecurity/crowdsec@v1.6.1/pkg/database/ent/alert.go (about)

     1  // Code generated by ent, DO NOT EDIT.
     2  
     3  package ent
     4  
     5  import (
     6  	"fmt"
     7  	"strings"
     8  	"time"
     9  
    10  	"entgo.io/ent"
    11  	"entgo.io/ent/dialect/sql"
    12  	"github.com/crowdsecurity/crowdsec/pkg/database/ent/alert"
    13  	"github.com/crowdsecurity/crowdsec/pkg/database/ent/machine"
    14  )
    15  
    16  // Alert is the model entity for the Alert schema.
    17  type Alert struct {
    18  	config `json:"-"`
    19  	// ID of the ent.
    20  	ID int `json:"id,omitempty"`
    21  	// CreatedAt holds the value of the "created_at" field.
    22  	CreatedAt *time.Time `json:"created_at,omitempty"`
    23  	// UpdatedAt holds the value of the "updated_at" field.
    24  	UpdatedAt *time.Time `json:"updated_at,omitempty"`
    25  	// Scenario holds the value of the "scenario" field.
    26  	Scenario string `json:"scenario,omitempty"`
    27  	// BucketId holds the value of the "bucketId" field.
    28  	BucketId string `json:"bucketId,omitempty"`
    29  	// Message holds the value of the "message" field.
    30  	Message string `json:"message,omitempty"`
    31  	// EventsCount holds the value of the "eventsCount" field.
    32  	EventsCount int32 `json:"eventsCount,omitempty"`
    33  	// StartedAt holds the value of the "startedAt" field.
    34  	StartedAt time.Time `json:"startedAt,omitempty"`
    35  	// StoppedAt holds the value of the "stoppedAt" field.
    36  	StoppedAt time.Time `json:"stoppedAt,omitempty"`
    37  	// SourceIp holds the value of the "sourceIp" field.
    38  	SourceIp string `json:"sourceIp,omitempty"`
    39  	// SourceRange holds the value of the "sourceRange" field.
    40  	SourceRange string `json:"sourceRange,omitempty"`
    41  	// SourceAsNumber holds the value of the "sourceAsNumber" field.
    42  	SourceAsNumber string `json:"sourceAsNumber,omitempty"`
    43  	// SourceAsName holds the value of the "sourceAsName" field.
    44  	SourceAsName string `json:"sourceAsName,omitempty"`
    45  	// SourceCountry holds the value of the "sourceCountry" field.
    46  	SourceCountry string `json:"sourceCountry,omitempty"`
    47  	// SourceLatitude holds the value of the "sourceLatitude" field.
    48  	SourceLatitude float32 `json:"sourceLatitude,omitempty"`
    49  	// SourceLongitude holds the value of the "sourceLongitude" field.
    50  	SourceLongitude float32 `json:"sourceLongitude,omitempty"`
    51  	// SourceScope holds the value of the "sourceScope" field.
    52  	SourceScope string `json:"sourceScope,omitempty"`
    53  	// SourceValue holds the value of the "sourceValue" field.
    54  	SourceValue string `json:"sourceValue,omitempty"`
    55  	// Capacity holds the value of the "capacity" field.
    56  	Capacity int32 `json:"capacity,omitempty"`
    57  	// LeakSpeed holds the value of the "leakSpeed" field.
    58  	LeakSpeed string `json:"leakSpeed,omitempty"`
    59  	// ScenarioVersion holds the value of the "scenarioVersion" field.
    60  	ScenarioVersion string `json:"scenarioVersion,omitempty"`
    61  	// ScenarioHash holds the value of the "scenarioHash" field.
    62  	ScenarioHash string `json:"scenarioHash,omitempty"`
    63  	// Simulated holds the value of the "simulated" field.
    64  	Simulated bool `json:"simulated,omitempty"`
    65  	// UUID holds the value of the "uuid" field.
    66  	UUID string `json:"uuid,omitempty"`
    67  	// Edges holds the relations/edges for other nodes in the graph.
    68  	// The values are being populated by the AlertQuery when eager-loading is set.
    69  	Edges          AlertEdges `json:"edges"`
    70  	machine_alerts *int
    71  	selectValues   sql.SelectValues
    72  }
    73  
    74  // AlertEdges holds the relations/edges for other nodes in the graph.
    75  type AlertEdges struct {
    76  	// Owner holds the value of the owner edge.
    77  	Owner *Machine `json:"owner,omitempty"`
    78  	// Decisions holds the value of the decisions edge.
    79  	Decisions []*Decision `json:"decisions,omitempty"`
    80  	// Events holds the value of the events edge.
    81  	Events []*Event `json:"events,omitempty"`
    82  	// Metas holds the value of the metas edge.
    83  	Metas []*Meta `json:"metas,omitempty"`
    84  	// loadedTypes holds the information for reporting if a
    85  	// type was loaded (or requested) in eager-loading or not.
    86  	loadedTypes [4]bool
    87  }
    88  
    89  // OwnerOrErr returns the Owner value or an error if the edge
    90  // was not loaded in eager-loading, or loaded but was not found.
    91  func (e AlertEdges) OwnerOrErr() (*Machine, error) {
    92  	if e.loadedTypes[0] {
    93  		if e.Owner == nil {
    94  			// Edge was loaded but was not found.
    95  			return nil, &NotFoundError{label: machine.Label}
    96  		}
    97  		return e.Owner, nil
    98  	}
    99  	return nil, &NotLoadedError{edge: "owner"}
   100  }
   101  
   102  // DecisionsOrErr returns the Decisions value or an error if the edge
   103  // was not loaded in eager-loading.
   104  func (e AlertEdges) DecisionsOrErr() ([]*Decision, error) {
   105  	if e.loadedTypes[1] {
   106  		return e.Decisions, nil
   107  	}
   108  	return nil, &NotLoadedError{edge: "decisions"}
   109  }
   110  
   111  // EventsOrErr returns the Events value or an error if the edge
   112  // was not loaded in eager-loading.
   113  func (e AlertEdges) EventsOrErr() ([]*Event, error) {
   114  	if e.loadedTypes[2] {
   115  		return e.Events, nil
   116  	}
   117  	return nil, &NotLoadedError{edge: "events"}
   118  }
   119  
   120  // MetasOrErr returns the Metas value or an error if the edge
   121  // was not loaded in eager-loading.
   122  func (e AlertEdges) MetasOrErr() ([]*Meta, error) {
   123  	if e.loadedTypes[3] {
   124  		return e.Metas, nil
   125  	}
   126  	return nil, &NotLoadedError{edge: "metas"}
   127  }
   128  
   129  // scanValues returns the types for scanning values from sql.Rows.
   130  func (*Alert) scanValues(columns []string) ([]any, error) {
   131  	values := make([]any, len(columns))
   132  	for i := range columns {
   133  		switch columns[i] {
   134  		case alert.FieldSimulated:
   135  			values[i] = new(sql.NullBool)
   136  		case alert.FieldSourceLatitude, alert.FieldSourceLongitude:
   137  			values[i] = new(sql.NullFloat64)
   138  		case alert.FieldID, alert.FieldEventsCount, alert.FieldCapacity:
   139  			values[i] = new(sql.NullInt64)
   140  		case alert.FieldScenario, alert.FieldBucketId, alert.FieldMessage, alert.FieldSourceIp, alert.FieldSourceRange, alert.FieldSourceAsNumber, alert.FieldSourceAsName, alert.FieldSourceCountry, alert.FieldSourceScope, alert.FieldSourceValue, alert.FieldLeakSpeed, alert.FieldScenarioVersion, alert.FieldScenarioHash, alert.FieldUUID:
   141  			values[i] = new(sql.NullString)
   142  		case alert.FieldCreatedAt, alert.FieldUpdatedAt, alert.FieldStartedAt, alert.FieldStoppedAt:
   143  			values[i] = new(sql.NullTime)
   144  		case alert.ForeignKeys[0]: // machine_alerts
   145  			values[i] = new(sql.NullInt64)
   146  		default:
   147  			values[i] = new(sql.UnknownType)
   148  		}
   149  	}
   150  	return values, nil
   151  }
   152  
   153  // assignValues assigns the values that were returned from sql.Rows (after scanning)
   154  // to the Alert fields.
   155  func (a *Alert) assignValues(columns []string, values []any) error {
   156  	if m, n := len(values), len(columns); m < n {
   157  		return fmt.Errorf("mismatch number of scan values: %d != %d", m, n)
   158  	}
   159  	for i := range columns {
   160  		switch columns[i] {
   161  		case alert.FieldID:
   162  			value, ok := values[i].(*sql.NullInt64)
   163  			if !ok {
   164  				return fmt.Errorf("unexpected type %T for field id", value)
   165  			}
   166  			a.ID = int(value.Int64)
   167  		case alert.FieldCreatedAt:
   168  			if value, ok := values[i].(*sql.NullTime); !ok {
   169  				return fmt.Errorf("unexpected type %T for field created_at", values[i])
   170  			} else if value.Valid {
   171  				a.CreatedAt = new(time.Time)
   172  				*a.CreatedAt = value.Time
   173  			}
   174  		case alert.FieldUpdatedAt:
   175  			if value, ok := values[i].(*sql.NullTime); !ok {
   176  				return fmt.Errorf("unexpected type %T for field updated_at", values[i])
   177  			} else if value.Valid {
   178  				a.UpdatedAt = new(time.Time)
   179  				*a.UpdatedAt = value.Time
   180  			}
   181  		case alert.FieldScenario:
   182  			if value, ok := values[i].(*sql.NullString); !ok {
   183  				return fmt.Errorf("unexpected type %T for field scenario", values[i])
   184  			} else if value.Valid {
   185  				a.Scenario = value.String
   186  			}
   187  		case alert.FieldBucketId:
   188  			if value, ok := values[i].(*sql.NullString); !ok {
   189  				return fmt.Errorf("unexpected type %T for field bucketId", values[i])
   190  			} else if value.Valid {
   191  				a.BucketId = value.String
   192  			}
   193  		case alert.FieldMessage:
   194  			if value, ok := values[i].(*sql.NullString); !ok {
   195  				return fmt.Errorf("unexpected type %T for field message", values[i])
   196  			} else if value.Valid {
   197  				a.Message = value.String
   198  			}
   199  		case alert.FieldEventsCount:
   200  			if value, ok := values[i].(*sql.NullInt64); !ok {
   201  				return fmt.Errorf("unexpected type %T for field eventsCount", values[i])
   202  			} else if value.Valid {
   203  				a.EventsCount = int32(value.Int64)
   204  			}
   205  		case alert.FieldStartedAt:
   206  			if value, ok := values[i].(*sql.NullTime); !ok {
   207  				return fmt.Errorf("unexpected type %T for field startedAt", values[i])
   208  			} else if value.Valid {
   209  				a.StartedAt = value.Time
   210  			}
   211  		case alert.FieldStoppedAt:
   212  			if value, ok := values[i].(*sql.NullTime); !ok {
   213  				return fmt.Errorf("unexpected type %T for field stoppedAt", values[i])
   214  			} else if value.Valid {
   215  				a.StoppedAt = value.Time
   216  			}
   217  		case alert.FieldSourceIp:
   218  			if value, ok := values[i].(*sql.NullString); !ok {
   219  				return fmt.Errorf("unexpected type %T for field sourceIp", values[i])
   220  			} else if value.Valid {
   221  				a.SourceIp = value.String
   222  			}
   223  		case alert.FieldSourceRange:
   224  			if value, ok := values[i].(*sql.NullString); !ok {
   225  				return fmt.Errorf("unexpected type %T for field sourceRange", values[i])
   226  			} else if value.Valid {
   227  				a.SourceRange = value.String
   228  			}
   229  		case alert.FieldSourceAsNumber:
   230  			if value, ok := values[i].(*sql.NullString); !ok {
   231  				return fmt.Errorf("unexpected type %T for field sourceAsNumber", values[i])
   232  			} else if value.Valid {
   233  				a.SourceAsNumber = value.String
   234  			}
   235  		case alert.FieldSourceAsName:
   236  			if value, ok := values[i].(*sql.NullString); !ok {
   237  				return fmt.Errorf("unexpected type %T for field sourceAsName", values[i])
   238  			} else if value.Valid {
   239  				a.SourceAsName = value.String
   240  			}
   241  		case alert.FieldSourceCountry:
   242  			if value, ok := values[i].(*sql.NullString); !ok {
   243  				return fmt.Errorf("unexpected type %T for field sourceCountry", values[i])
   244  			} else if value.Valid {
   245  				a.SourceCountry = value.String
   246  			}
   247  		case alert.FieldSourceLatitude:
   248  			if value, ok := values[i].(*sql.NullFloat64); !ok {
   249  				return fmt.Errorf("unexpected type %T for field sourceLatitude", values[i])
   250  			} else if value.Valid {
   251  				a.SourceLatitude = float32(value.Float64)
   252  			}
   253  		case alert.FieldSourceLongitude:
   254  			if value, ok := values[i].(*sql.NullFloat64); !ok {
   255  				return fmt.Errorf("unexpected type %T for field sourceLongitude", values[i])
   256  			} else if value.Valid {
   257  				a.SourceLongitude = float32(value.Float64)
   258  			}
   259  		case alert.FieldSourceScope:
   260  			if value, ok := values[i].(*sql.NullString); !ok {
   261  				return fmt.Errorf("unexpected type %T for field sourceScope", values[i])
   262  			} else if value.Valid {
   263  				a.SourceScope = value.String
   264  			}
   265  		case alert.FieldSourceValue:
   266  			if value, ok := values[i].(*sql.NullString); !ok {
   267  				return fmt.Errorf("unexpected type %T for field sourceValue", values[i])
   268  			} else if value.Valid {
   269  				a.SourceValue = value.String
   270  			}
   271  		case alert.FieldCapacity:
   272  			if value, ok := values[i].(*sql.NullInt64); !ok {
   273  				return fmt.Errorf("unexpected type %T for field capacity", values[i])
   274  			} else if value.Valid {
   275  				a.Capacity = int32(value.Int64)
   276  			}
   277  		case alert.FieldLeakSpeed:
   278  			if value, ok := values[i].(*sql.NullString); !ok {
   279  				return fmt.Errorf("unexpected type %T for field leakSpeed", values[i])
   280  			} else if value.Valid {
   281  				a.LeakSpeed = value.String
   282  			}
   283  		case alert.FieldScenarioVersion:
   284  			if value, ok := values[i].(*sql.NullString); !ok {
   285  				return fmt.Errorf("unexpected type %T for field scenarioVersion", values[i])
   286  			} else if value.Valid {
   287  				a.ScenarioVersion = value.String
   288  			}
   289  		case alert.FieldScenarioHash:
   290  			if value, ok := values[i].(*sql.NullString); !ok {
   291  				return fmt.Errorf("unexpected type %T for field scenarioHash", values[i])
   292  			} else if value.Valid {
   293  				a.ScenarioHash = value.String
   294  			}
   295  		case alert.FieldSimulated:
   296  			if value, ok := values[i].(*sql.NullBool); !ok {
   297  				return fmt.Errorf("unexpected type %T for field simulated", values[i])
   298  			} else if value.Valid {
   299  				a.Simulated = value.Bool
   300  			}
   301  		case alert.FieldUUID:
   302  			if value, ok := values[i].(*sql.NullString); !ok {
   303  				return fmt.Errorf("unexpected type %T for field uuid", values[i])
   304  			} else if value.Valid {
   305  				a.UUID = value.String
   306  			}
   307  		case alert.ForeignKeys[0]:
   308  			if value, ok := values[i].(*sql.NullInt64); !ok {
   309  				return fmt.Errorf("unexpected type %T for edge-field machine_alerts", value)
   310  			} else if value.Valid {
   311  				a.machine_alerts = new(int)
   312  				*a.machine_alerts = int(value.Int64)
   313  			}
   314  		default:
   315  			a.selectValues.Set(columns[i], values[i])
   316  		}
   317  	}
   318  	return nil
   319  }
   320  
   321  // Value returns the ent.Value that was dynamically selected and assigned to the Alert.
   322  // This includes values selected through modifiers, order, etc.
   323  func (a *Alert) Value(name string) (ent.Value, error) {
   324  	return a.selectValues.Get(name)
   325  }
   326  
   327  // QueryOwner queries the "owner" edge of the Alert entity.
   328  func (a *Alert) QueryOwner() *MachineQuery {
   329  	return NewAlertClient(a.config).QueryOwner(a)
   330  }
   331  
   332  // QueryDecisions queries the "decisions" edge of the Alert entity.
   333  func (a *Alert) QueryDecisions() *DecisionQuery {
   334  	return NewAlertClient(a.config).QueryDecisions(a)
   335  }
   336  
   337  // QueryEvents queries the "events" edge of the Alert entity.
   338  func (a *Alert) QueryEvents() *EventQuery {
   339  	return NewAlertClient(a.config).QueryEvents(a)
   340  }
   341  
   342  // QueryMetas queries the "metas" edge of the Alert entity.
   343  func (a *Alert) QueryMetas() *MetaQuery {
   344  	return NewAlertClient(a.config).QueryMetas(a)
   345  }
   346  
   347  // Update returns a builder for updating this Alert.
   348  // Note that you need to call Alert.Unwrap() before calling this method if this Alert
   349  // was returned from a transaction, and the transaction was committed or rolled back.
   350  func (a *Alert) Update() *AlertUpdateOne {
   351  	return NewAlertClient(a.config).UpdateOne(a)
   352  }
   353  
   354  // Unwrap unwraps the Alert entity that was returned from a transaction after it was closed,
   355  // so that all future queries will be executed through the driver which created the transaction.
   356  func (a *Alert) Unwrap() *Alert {
   357  	_tx, ok := a.config.driver.(*txDriver)
   358  	if !ok {
   359  		panic("ent: Alert is not a transactional entity")
   360  	}
   361  	a.config.driver = _tx.drv
   362  	return a
   363  }
   364  
   365  // String implements the fmt.Stringer.
   366  func (a *Alert) String() string {
   367  	var builder strings.Builder
   368  	builder.WriteString("Alert(")
   369  	builder.WriteString(fmt.Sprintf("id=%v, ", a.ID))
   370  	if v := a.CreatedAt; v != nil {
   371  		builder.WriteString("created_at=")
   372  		builder.WriteString(v.Format(time.ANSIC))
   373  	}
   374  	builder.WriteString(", ")
   375  	if v := a.UpdatedAt; v != nil {
   376  		builder.WriteString("updated_at=")
   377  		builder.WriteString(v.Format(time.ANSIC))
   378  	}
   379  	builder.WriteString(", ")
   380  	builder.WriteString("scenario=")
   381  	builder.WriteString(a.Scenario)
   382  	builder.WriteString(", ")
   383  	builder.WriteString("bucketId=")
   384  	builder.WriteString(a.BucketId)
   385  	builder.WriteString(", ")
   386  	builder.WriteString("message=")
   387  	builder.WriteString(a.Message)
   388  	builder.WriteString(", ")
   389  	builder.WriteString("eventsCount=")
   390  	builder.WriteString(fmt.Sprintf("%v", a.EventsCount))
   391  	builder.WriteString(", ")
   392  	builder.WriteString("startedAt=")
   393  	builder.WriteString(a.StartedAt.Format(time.ANSIC))
   394  	builder.WriteString(", ")
   395  	builder.WriteString("stoppedAt=")
   396  	builder.WriteString(a.StoppedAt.Format(time.ANSIC))
   397  	builder.WriteString(", ")
   398  	builder.WriteString("sourceIp=")
   399  	builder.WriteString(a.SourceIp)
   400  	builder.WriteString(", ")
   401  	builder.WriteString("sourceRange=")
   402  	builder.WriteString(a.SourceRange)
   403  	builder.WriteString(", ")
   404  	builder.WriteString("sourceAsNumber=")
   405  	builder.WriteString(a.SourceAsNumber)
   406  	builder.WriteString(", ")
   407  	builder.WriteString("sourceAsName=")
   408  	builder.WriteString(a.SourceAsName)
   409  	builder.WriteString(", ")
   410  	builder.WriteString("sourceCountry=")
   411  	builder.WriteString(a.SourceCountry)
   412  	builder.WriteString(", ")
   413  	builder.WriteString("sourceLatitude=")
   414  	builder.WriteString(fmt.Sprintf("%v", a.SourceLatitude))
   415  	builder.WriteString(", ")
   416  	builder.WriteString("sourceLongitude=")
   417  	builder.WriteString(fmt.Sprintf("%v", a.SourceLongitude))
   418  	builder.WriteString(", ")
   419  	builder.WriteString("sourceScope=")
   420  	builder.WriteString(a.SourceScope)
   421  	builder.WriteString(", ")
   422  	builder.WriteString("sourceValue=")
   423  	builder.WriteString(a.SourceValue)
   424  	builder.WriteString(", ")
   425  	builder.WriteString("capacity=")
   426  	builder.WriteString(fmt.Sprintf("%v", a.Capacity))
   427  	builder.WriteString(", ")
   428  	builder.WriteString("leakSpeed=")
   429  	builder.WriteString(a.LeakSpeed)
   430  	builder.WriteString(", ")
   431  	builder.WriteString("scenarioVersion=")
   432  	builder.WriteString(a.ScenarioVersion)
   433  	builder.WriteString(", ")
   434  	builder.WriteString("scenarioHash=")
   435  	builder.WriteString(a.ScenarioHash)
   436  	builder.WriteString(", ")
   437  	builder.WriteString("simulated=")
   438  	builder.WriteString(fmt.Sprintf("%v", a.Simulated))
   439  	builder.WriteString(", ")
   440  	builder.WriteString("uuid=")
   441  	builder.WriteString(a.UUID)
   442  	builder.WriteByte(')')
   443  	return builder.String()
   444  }
   445  
   446  // Alerts is a parsable slice of Alert.
   447  type Alerts []*Alert