| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- package schema
- import (
- "github.com/Wei-Shaw/sub2api/ent/schema/mixins"
- "entgo.io/ent"
- "entgo.io/ent/dialect/entsql"
- "entgo.io/ent/schema"
- "entgo.io/ent/schema/edge"
- "entgo.io/ent/schema/field"
- "entgo.io/ent/schema/index"
- )
- // UserAttributeValue holds a user's value for a specific attribute.
- //
- // This entity stores the actual values that users have for each attribute definition.
- // Values are stored as strings and converted to the appropriate type by the application.
- type UserAttributeValue struct {
- ent.Schema
- }
- func (UserAttributeValue) Annotations() []schema.Annotation {
- return []schema.Annotation{
- entsql.Annotation{Table: "user_attribute_values"},
- }
- }
- func (UserAttributeValue) Mixin() []ent.Mixin {
- return []ent.Mixin{
- // Only use TimeMixin, no soft delete - values are hard deleted
- mixins.TimeMixin{},
- }
- }
- func (UserAttributeValue) Fields() []ent.Field {
- return []ent.Field{
- // user_id: References the user this value belongs to
- field.Int64("user_id"),
- // attribute_id: References the attribute definition
- field.Int64("attribute_id"),
- // value: The actual value stored as a string
- // For multi_select, this is a JSON array string
- field.Text("value").
- Default(""),
- }
- }
- func (UserAttributeValue) Edges() []ent.Edge {
- return []ent.Edge{
- // user: The user who owns this attribute value
- edge.From("user", User.Type).
- Ref("attribute_values").
- Field("user_id").
- Required().
- Unique(),
- // definition: The attribute definition this value is for
- edge.From("definition", UserAttributeDefinition.Type).
- Ref("values").
- Field("attribute_id").
- Required().
- Unique(),
- }
- }
- func (UserAttributeValue) Indexes() []ent.Index {
- return []ent.Index{
- // Unique index on (user_id, attribute_id)
- index.Fields("user_id", "attribute_id").Unique(),
- index.Fields("attribute_id"),
- }
- }
|