// Package schema defines the Ent schema for domain entities. package schema import ( "time" "entgo.io/ent" "entgo.io/ent/schema/field" "entgo.io/ent/schema/index" ) // AuditLog holds the schema definition for the AuditLog entity. type AuditLog struct { ent.Schema } // Fields of the AuditLog. func (AuditLog) Fields() []ent.Field { return []ent.Field{ field.String("id"). Unique(). Immutable(), field.String("user_id"). NotEmpty(). Comment("ID of the user/actor performing the action"), field.String("action"). NotEmpty(). Comment("Action performed (e.g., user.create, user.update)"), field.String("resource"). Optional(). Comment("Resource type (e.g., user, role)"), field.String("resource_id"). Optional(). Comment("ID of the target resource"), field.String("ip_address"). Optional(). Comment("IP address of the client"), field.String("user_agent"). Optional(). Comment("User agent of the client"), field.JSON("metadata", map[string]interface{}{}). Optional(). Comment("Additional metadata as JSON"), field.Time("timestamp"). Default(time.Now). Immutable(), } } // Indexes of the AuditLog. func (AuditLog) Indexes() []ent.Index { return []ent.Index{ index.Fields("user_id"), index.Fields("resource_id"), index.Fields("timestamp"), index.Fields("action"), index.Fields("resource"), } }