// Code generated by ent, DO NOT EDIT. package ent import ( "context" "errors" "fmt" "entgo.io/ent/dialect/sql/sqlgraph" "entgo.io/ent/schema/field" "within.website/x/cmd/tourian/ent/chatmessage" ) // ChatMessageCreate is the builder for creating a ChatMessage entity. type ChatMessageCreate struct { config mutation *ChatMessageMutation hooks []Hook } // SetConversationID sets the "conversation_id" field. func (cmc *ChatMessageCreate) SetConversationID(s string) *ChatMessageCreate { cmc.mutation.SetConversationID(s) return cmc } // SetRole sets the "role" field. func (cmc *ChatMessageCreate) SetRole(s string) *ChatMessageCreate { cmc.mutation.SetRole(s) return cmc } // SetContent sets the "content" field. func (cmc *ChatMessageCreate) SetContent(s string) *ChatMessageCreate { cmc.mutation.SetContent(s) return cmc } // SetID sets the "id" field. func (cmc *ChatMessageCreate) SetID(s string) *ChatMessageCreate { cmc.mutation.SetID(s) return cmc } // Mutation returns the ChatMessageMutation object of the builder. func (cmc *ChatMessageCreate) Mutation() *ChatMessageMutation { return cmc.mutation } // Save creates the ChatMessage in the database. func (cmc *ChatMessageCreate) Save(ctx context.Context) (*ChatMessage, error) { return withHooks(ctx, cmc.sqlSave, cmc.mutation, cmc.hooks) } // SaveX calls Save and panics if Save returns an error. func (cmc *ChatMessageCreate) SaveX(ctx context.Context) *ChatMessage { v, err := cmc.Save(ctx) if err != nil { panic(err) } return v } // Exec executes the query. func (cmc *ChatMessageCreate) Exec(ctx context.Context) error { _, err := cmc.Save(ctx) return err } // ExecX is like Exec, but panics if an error occurs. func (cmc *ChatMessageCreate) ExecX(ctx context.Context) { if err := cmc.Exec(ctx); err != nil { panic(err) } } // check runs all checks and user-defined validators on the builder. func (cmc *ChatMessageCreate) check() error { if _, ok := cmc.mutation.ConversationID(); !ok { return &ValidationError{Name: "conversation_id", err: errors.New(`ent: missing required field "ChatMessage.conversation_id"`)} } if v, ok := cmc.mutation.ConversationID(); ok { if err := chatmessage.ConversationIDValidator(v); err != nil { return &ValidationError{Name: "conversation_id", err: fmt.Errorf(`ent: validator failed for field "ChatMessage.conversation_id": %w`, err)} } } if _, ok := cmc.mutation.Role(); !ok { return &ValidationError{Name: "role", err: errors.New(`ent: missing required field "ChatMessage.role"`)} } if v, ok := cmc.mutation.Role(); ok { if err := chatmessage.RoleValidator(v); err != nil { return &ValidationError{Name: "role", err: fmt.Errorf(`ent: validator failed for field "ChatMessage.role": %w`, err)} } } if _, ok := cmc.mutation.Content(); !ok { return &ValidationError{Name: "content", err: errors.New(`ent: missing required field "ChatMessage.content"`)} } if v, ok := cmc.mutation.Content(); ok { if err := chatmessage.ContentValidator(v); err != nil { return &ValidationError{Name: "content", err: fmt.Errorf(`ent: validator failed for field "ChatMessage.content": %w`, err)} } } if v, ok := cmc.mutation.ID(); ok { if err := chatmessage.IDValidator(v); err != nil { return &ValidationError{Name: "id", err: fmt.Errorf(`ent: validator failed for field "ChatMessage.id": %w`, err)} } } return nil } func (cmc *ChatMessageCreate) sqlSave(ctx context.Context) (*ChatMessage, error) { if err := cmc.check(); err != nil { return nil, err } _node, _spec := cmc.createSpec() if err := sqlgraph.CreateNode(ctx, cmc.driver, _spec); err != nil { if sqlgraph.IsConstraintError(err) { err = &ConstraintError{msg: err.Error(), wrap: err} } return nil, err } if _spec.ID.Value != nil { if id, ok := _spec.ID.Value.(string); ok { _node.ID = id } else { return nil, fmt.Errorf("unexpected ChatMessage.ID type: %T", _spec.ID.Value) } } cmc.mutation.id = &_node.ID cmc.mutation.done = true return _node, nil } func (cmc *ChatMessageCreate) createSpec() (*ChatMessage, *sqlgraph.CreateSpec) { var ( _node = &ChatMessage{config: cmc.config} _spec = sqlgraph.NewCreateSpec(chatmessage.Table, sqlgraph.NewFieldSpec(chatmessage.FieldID, field.TypeString)) ) if id, ok := cmc.mutation.ID(); ok { _node.ID = id _spec.ID.Value = id } if value, ok := cmc.mutation.ConversationID(); ok { _spec.SetField(chatmessage.FieldConversationID, field.TypeString, value) _node.ConversationID = value } if value, ok := cmc.mutation.Role(); ok { _spec.SetField(chatmessage.FieldRole, field.TypeString, value) _node.Role = value } if value, ok := cmc.mutation.Content(); ok { _spec.SetField(chatmessage.FieldContent, field.TypeString, value) _node.Content = value } return _node, _spec } // ChatMessageCreateBulk is the builder for creating many ChatMessage entities in bulk. type ChatMessageCreateBulk struct { config err error builders []*ChatMessageCreate } // Save creates the ChatMessage entities in the database. func (cmcb *ChatMessageCreateBulk) Save(ctx context.Context) ([]*ChatMessage, error) { if cmcb.err != nil { return nil, cmcb.err } specs := make([]*sqlgraph.CreateSpec, len(cmcb.builders)) nodes := make([]*ChatMessage, len(cmcb.builders)) mutators := make([]Mutator, len(cmcb.builders)) for i := range cmcb.builders { func(i int, root context.Context) { builder := cmcb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { mutation, ok := m.(*ChatMessageMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } if err := builder.check(); err != nil { return nil, err } builder.mutation = mutation var err error nodes[i], specs[i] = builder.createSpec() if i < len(mutators)-1 { _, err = mutators[i+1].Mutate(root, cmcb.builders[i+1].mutation) } else { spec := &sqlgraph.BatchCreateSpec{Nodes: specs} // Invoke the actual operation on the latest mutation in the chain. if err = sqlgraph.BatchCreate(ctx, cmcb.driver, spec); err != nil { if sqlgraph.IsConstraintError(err) { err = &ConstraintError{msg: err.Error(), wrap: err} } } } if err != nil { return nil, err } mutation.id = &nodes[i].ID mutation.done = true return nodes[i], nil }) for i := len(builder.hooks) - 1; i >= 0; i-- { mut = builder.hooks[i](mut) } mutators[i] = mut }(i, ctx) } if len(mutators) > 0 { if _, err := mutators[0].Mutate(ctx, cmcb.builders[0].mutation); err != nil { return nil, err } } return nodes, nil } // SaveX is like Save, but panics if an error occurs. func (cmcb *ChatMessageCreateBulk) SaveX(ctx context.Context) []*ChatMessage { v, err := cmcb.Save(ctx) if err != nil { panic(err) } return v } // Exec executes the query. func (cmcb *ChatMessageCreateBulk) Exec(ctx context.Context) error { _, err := cmcb.Save(ctx) return err } // ExecX is like Exec, but panics if an error occurs. func (cmcb *ChatMessageCreateBulk) ExecX(ctx context.Context) { if err := cmcb.Exec(ctx); err != nil { panic(err) } }