alert.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package schema
  2. import (
  3. "entgo.io/ent"
  4. "entgo.io/ent/dialect/entsql"
  5. "entgo.io/ent/schema/edge"
  6. "entgo.io/ent/schema/field"
  7. "entgo.io/ent/schema/index"
  8. "github.com/crowdsecurity/crowdsec/pkg/types"
  9. )
  10. // Alert holds the schema definition for the Alert entity.
  11. type Alert struct {
  12. ent.Schema
  13. }
  14. // Fields of the Alert.
  15. func (Alert) Fields() []ent.Field {
  16. return []ent.Field{
  17. field.Time("created_at").
  18. Default(types.UtcNow).
  19. UpdateDefault(types.UtcNow).Nillable().Optional(),
  20. field.Time("updated_at").
  21. Default(types.UtcNow).
  22. UpdateDefault(types.UtcNow).Nillable().Optional(),
  23. field.String("scenario"),
  24. field.String("bucketId").Default("").Optional(),
  25. field.String("message").Default("").Optional(),
  26. field.Int32("eventsCount").Default(0).Optional(),
  27. field.Time("startedAt").Default(types.UtcNow).Optional(),
  28. field.Time("stoppedAt").Default(types.UtcNow).Optional(),
  29. field.String("sourceIp").
  30. Optional(),
  31. field.String("sourceRange").
  32. Optional(),
  33. field.String("sourceAsNumber").
  34. Optional(),
  35. field.String("sourceAsName").
  36. Optional(),
  37. field.String("sourceCountry").
  38. Optional(),
  39. field.Float32("sourceLatitude").
  40. Optional(),
  41. field.Float32("sourceLongitude").
  42. Optional(),
  43. field.String("sourceScope").Optional(),
  44. field.String("sourceValue").Optional(),
  45. field.Int32("capacity").Optional(),
  46. field.String("leakSpeed").Optional(),
  47. field.String("scenarioVersion").Optional(),
  48. field.String("scenarioHash").Optional(),
  49. field.Bool("simulated").Default(false),
  50. }
  51. }
  52. // Edges of the Alert.
  53. func (Alert) Edges() []ent.Edge {
  54. return []ent.Edge{
  55. edge.From("owner", Machine.Type).
  56. Ref("alerts").
  57. Unique(),
  58. edge.To("decisions", Decision.Type).
  59. Annotations(entsql.Annotation{
  60. OnDelete: entsql.Cascade,
  61. }),
  62. edge.To("events", Event.Type).
  63. Annotations(entsql.Annotation{
  64. OnDelete: entsql.Cascade,
  65. }),
  66. edge.To("metas", Meta.Type).
  67. Annotations(entsql.Annotation{
  68. OnDelete: entsql.Cascade,
  69. }),
  70. }
  71. }
  72. func (Alert) Indexes() []ent.Index {
  73. return []ent.Index{
  74. index.Fields("id"),
  75. }
  76. }