// Code generated by ent, DO NOT EDIT. package ent import ( "context" "errors" "fmt" "log" "reflect" "wechat-api/ent/migrate" "wechat-api/ent/contact" "wechat-api/ent/label" "wechat-api/ent/labelrelationship" "wechat-api/ent/message" "wechat-api/ent/server" "wechat-api/ent/wx" "entgo.io/ent" "entgo.io/ent/dialect" "entgo.io/ent/dialect/sql" "entgo.io/ent/dialect/sql/sqlgraph" stdsql "database/sql" ) // Client is the client that holds all ent builders. type Client struct { config // Schema is the client for creating, migrating and dropping schema. Schema *migrate.Schema // Contact is the client for interacting with the Contact builders. Contact *ContactClient // Label is the client for interacting with the Label builders. Label *LabelClient // LabelRelationship is the client for interacting with the LabelRelationship builders. LabelRelationship *LabelRelationshipClient // Message is the client for interacting with the Message builders. Message *MessageClient // Server is the client for interacting with the Server builders. Server *ServerClient // Wx is the client for interacting with the Wx builders. Wx *WxClient } // NewClient creates a new client configured with the given options. func NewClient(opts ...Option) *Client { client := &Client{config: newConfig(opts...)} client.init() return client } func (c *Client) init() { c.Schema = migrate.NewSchema(c.driver) c.Contact = NewContactClient(c.config) c.Label = NewLabelClient(c.config) c.LabelRelationship = NewLabelRelationshipClient(c.config) c.Message = NewMessageClient(c.config) c.Server = NewServerClient(c.config) c.Wx = NewWxClient(c.config) } type ( // config is the configuration for the client and its builder. config struct { // driver used for executing database requests. driver dialect.Driver // debug enable a debug logging. debug bool // log used for logging on debug mode. log func(...any) // hooks to execute on mutations. hooks *hooks // interceptors to execute on queries. inters *inters } // Option function to configure the client. Option func(*config) ) // newConfig creates a new config for the client. func newConfig(opts ...Option) config { cfg := config{log: log.Println, hooks: &hooks{}, inters: &inters{}} cfg.options(opts...) return cfg } // options applies the options on the config object. func (c *config) options(opts ...Option) { for _, opt := range opts { opt(c) } if c.debug { c.driver = dialect.Debug(c.driver, c.log) } } // Debug enables debug logging on the ent.Driver. func Debug() Option { return func(c *config) { c.debug = true } } // Log sets the logging function for debug mode. func Log(fn func(...any)) Option { return func(c *config) { c.log = fn } } // Driver configures the client driver. func Driver(driver dialect.Driver) Option { return func(c *config) { c.driver = driver } } // Open opens a database/sql.DB specified by the driver name and // the data source name, and returns a new client attached to it. // Optional parameters can be added for configuring the client. func Open(driverName, dataSourceName string, options ...Option) (*Client, error) { switch driverName { case dialect.MySQL, dialect.Postgres, dialect.SQLite: drv, err := sql.Open(driverName, dataSourceName) if err != nil { return nil, err } return NewClient(append(options, Driver(drv))...), nil default: return nil, fmt.Errorf("unsupported driver: %q", driverName) } } // ErrTxStarted is returned when trying to start a new transaction from a transactional client. var ErrTxStarted = errors.New("ent: cannot start a transaction within a transaction") // Tx returns a new transactional client. The provided context // is used until the transaction is committed or rolled back. func (c *Client) Tx(ctx context.Context) (*Tx, error) { if _, ok := c.driver.(*txDriver); ok { return nil, ErrTxStarted } tx, err := newTx(ctx, c.driver) if err != nil { return nil, fmt.Errorf("ent: starting a transaction: %w", err) } cfg := c.config cfg.driver = tx return &Tx{ ctx: ctx, config: cfg, Contact: NewContactClient(cfg), Label: NewLabelClient(cfg), LabelRelationship: NewLabelRelationshipClient(cfg), Message: NewMessageClient(cfg), Server: NewServerClient(cfg), Wx: NewWxClient(cfg), }, nil } // BeginTx returns a transactional client with specified options. func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) { if _, ok := c.driver.(*txDriver); ok { return nil, errors.New("ent: cannot start a transaction within a transaction") } tx, err := c.driver.(interface { BeginTx(context.Context, *sql.TxOptions) (dialect.Tx, error) }).BeginTx(ctx, opts) if err != nil { return nil, fmt.Errorf("ent: starting a transaction: %w", err) } cfg := c.config cfg.driver = &txDriver{tx: tx, drv: c.driver} return &Tx{ ctx: ctx, config: cfg, Contact: NewContactClient(cfg), Label: NewLabelClient(cfg), LabelRelationship: NewLabelRelationshipClient(cfg), Message: NewMessageClient(cfg), Server: NewServerClient(cfg), Wx: NewWxClient(cfg), }, nil } // Debug returns a new debug-client. It's used to get verbose logging on specific operations. // // client.Debug(). // Contact. // Query(). // Count(ctx) func (c *Client) Debug() *Client { if c.debug { return c } cfg := c.config cfg.driver = dialect.Debug(c.driver, c.log) client := &Client{config: cfg} client.init() return client } // Close closes the database connection and prevents new queries from starting. func (c *Client) Close() error { return c.driver.Close() } // Use adds the mutation hooks to all the entity clients. // In order to add hooks to a specific client, call: `client.Node.Use(...)`. func (c *Client) Use(hooks ...Hook) { for _, n := range []interface{ Use(...Hook) }{ c.Contact, c.Label, c.LabelRelationship, c.Message, c.Server, c.Wx, } { n.Use(hooks...) } } // Intercept adds the query interceptors to all the entity clients. // In order to add interceptors to a specific client, call: `client.Node.Intercept(...)`. func (c *Client) Intercept(interceptors ...Interceptor) { for _, n := range []interface{ Intercept(...Interceptor) }{ c.Contact, c.Label, c.LabelRelationship, c.Message, c.Server, c.Wx, } { n.Intercept(interceptors...) } } // Mutate implements the ent.Mutator interface. func (c *Client) Mutate(ctx context.Context, m Mutation) (Value, error) { switch m := m.(type) { case *ContactMutation: return c.Contact.mutate(ctx, m) case *LabelMutation: return c.Label.mutate(ctx, m) case *LabelRelationshipMutation: return c.LabelRelationship.mutate(ctx, m) case *MessageMutation: return c.Message.mutate(ctx, m) case *ServerMutation: return c.Server.mutate(ctx, m) case *WxMutation: return c.Wx.mutate(ctx, m) default: return nil, fmt.Errorf("ent: unknown mutation type %T", m) } } // ContactClient is a client for the Contact schema. type ContactClient struct { config } // NewContactClient returns a client for the Contact from the given config. func NewContactClient(c config) *ContactClient { return &ContactClient{config: c} } // Use adds a list of mutation hooks to the hooks stack. // A call to `Use(f, g, h)` equals to `contact.Hooks(f(g(h())))`. func (c *ContactClient) Use(hooks ...Hook) { c.hooks.Contact = append(c.hooks.Contact, hooks...) } // Intercept adds a list of query interceptors to the interceptors stack. // A call to `Intercept(f, g, h)` equals to `contact.Intercept(f(g(h())))`. func (c *ContactClient) Intercept(interceptors ...Interceptor) { c.inters.Contact = append(c.inters.Contact, interceptors...) } // Create returns a builder for creating a Contact entity. func (c *ContactClient) Create() *ContactCreate { mutation := newContactMutation(c.config, OpCreate) return &ContactCreate{config: c.config, hooks: c.Hooks(), mutation: mutation} } // CreateBulk returns a builder for creating a bulk of Contact entities. func (c *ContactClient) CreateBulk(builders ...*ContactCreate) *ContactCreateBulk { return &ContactCreateBulk{config: c.config, builders: builders} } // MapCreateBulk creates a bulk creation builder from the given slice. For each item in the slice, the function creates // a builder and applies setFunc on it. func (c *ContactClient) MapCreateBulk(slice any, setFunc func(*ContactCreate, int)) *ContactCreateBulk { rv := reflect.ValueOf(slice) if rv.Kind() != reflect.Slice { return &ContactCreateBulk{err: fmt.Errorf("calling to ContactClient.MapCreateBulk with wrong type %T, need slice", slice)} } builders := make([]*ContactCreate, rv.Len()) for i := 0; i < rv.Len(); i++ { builders[i] = c.Create() setFunc(builders[i], i) } return &ContactCreateBulk{config: c.config, builders: builders} } // Update returns an update builder for Contact. func (c *ContactClient) Update() *ContactUpdate { mutation := newContactMutation(c.config, OpUpdate) return &ContactUpdate{config: c.config, hooks: c.Hooks(), mutation: mutation} } // UpdateOne returns an update builder for the given entity. func (c *ContactClient) UpdateOne(co *Contact) *ContactUpdateOne { mutation := newContactMutation(c.config, OpUpdateOne, withContact(co)) return &ContactUpdateOne{config: c.config, hooks: c.Hooks(), mutation: mutation} } // UpdateOneID returns an update builder for the given id. func (c *ContactClient) UpdateOneID(id uint64) *ContactUpdateOne { mutation := newContactMutation(c.config, OpUpdateOne, withContactID(id)) return &ContactUpdateOne{config: c.config, hooks: c.Hooks(), mutation: mutation} } // Delete returns a delete builder for Contact. func (c *ContactClient) Delete() *ContactDelete { mutation := newContactMutation(c.config, OpDelete) return &ContactDelete{config: c.config, hooks: c.Hooks(), mutation: mutation} } // DeleteOne returns a builder for deleting the given entity. func (c *ContactClient) DeleteOne(co *Contact) *ContactDeleteOne { return c.DeleteOneID(co.ID) } // DeleteOneID returns a builder for deleting the given entity by its id. func (c *ContactClient) DeleteOneID(id uint64) *ContactDeleteOne { builder := c.Delete().Where(contact.ID(id)) builder.mutation.id = &id builder.mutation.op = OpDeleteOne return &ContactDeleteOne{builder} } // Query returns a query builder for Contact. func (c *ContactClient) Query() *ContactQuery { return &ContactQuery{ config: c.config, ctx: &QueryContext{Type: TypeContact}, inters: c.Interceptors(), } } // Get returns a Contact entity by its id. func (c *ContactClient) Get(ctx context.Context, id uint64) (*Contact, error) { return c.Query().Where(contact.ID(id)).Only(ctx) } // GetX is like Get, but panics if an error occurs. func (c *ContactClient) GetX(ctx context.Context, id uint64) *Contact { obj, err := c.Get(ctx, id) if err != nil { panic(err) } return obj } // QueryContactRelationships queries the contact_relationships edge of a Contact. func (c *ContactClient) QueryContactRelationships(co *Contact) *LabelRelationshipQuery { query := (&LabelRelationshipClient{config: c.config}).Query() query.path = func(context.Context) (fromV *sql.Selector, _ error) { id := co.ID step := sqlgraph.NewStep( sqlgraph.From(contact.Table, contact.FieldID, id), sqlgraph.To(labelrelationship.Table, labelrelationship.FieldID), sqlgraph.Edge(sqlgraph.O2M, false, contact.ContactRelationshipsTable, contact.ContactRelationshipsColumn), ) fromV = sqlgraph.Neighbors(co.driver.Dialect(), step) return fromV, nil } return query } // Hooks returns the client hooks. func (c *ContactClient) Hooks() []Hook { hooks := c.hooks.Contact return append(hooks[:len(hooks):len(hooks)], contact.Hooks[:]...) } // Interceptors returns the client interceptors. func (c *ContactClient) Interceptors() []Interceptor { inters := c.inters.Contact return append(inters[:len(inters):len(inters)], contact.Interceptors[:]...) } func (c *ContactClient) mutate(ctx context.Context, m *ContactMutation) (Value, error) { switch m.Op() { case OpCreate: return (&ContactCreate{config: c.config, hooks: c.Hooks(), mutation: m}).Save(ctx) case OpUpdate: return (&ContactUpdate{config: c.config, hooks: c.Hooks(), mutation: m}).Save(ctx) case OpUpdateOne: return (&ContactUpdateOne{config: c.config, hooks: c.Hooks(), mutation: m}).Save(ctx) case OpDelete, OpDeleteOne: return (&ContactDelete{config: c.config, hooks: c.Hooks(), mutation: m}).Exec(ctx) default: return nil, fmt.Errorf("ent: unknown Contact mutation op: %q", m.Op()) } } // LabelClient is a client for the Label schema. type LabelClient struct { config } // NewLabelClient returns a client for the Label from the given config. func NewLabelClient(c config) *LabelClient { return &LabelClient{config: c} } // Use adds a list of mutation hooks to the hooks stack. // A call to `Use(f, g, h)` equals to `label.Hooks(f(g(h())))`. func (c *LabelClient) Use(hooks ...Hook) { c.hooks.Label = append(c.hooks.Label, hooks...) } // Intercept adds a list of query interceptors to the interceptors stack. // A call to `Intercept(f, g, h)` equals to `label.Intercept(f(g(h())))`. func (c *LabelClient) Intercept(interceptors ...Interceptor) { c.inters.Label = append(c.inters.Label, interceptors...) } // Create returns a builder for creating a Label entity. func (c *LabelClient) Create() *LabelCreate { mutation := newLabelMutation(c.config, OpCreate) return &LabelCreate{config: c.config, hooks: c.Hooks(), mutation: mutation} } // CreateBulk returns a builder for creating a bulk of Label entities. func (c *LabelClient) CreateBulk(builders ...*LabelCreate) *LabelCreateBulk { return &LabelCreateBulk{config: c.config, builders: builders} } // MapCreateBulk creates a bulk creation builder from the given slice. For each item in the slice, the function creates // a builder and applies setFunc on it. func (c *LabelClient) MapCreateBulk(slice any, setFunc func(*LabelCreate, int)) *LabelCreateBulk { rv := reflect.ValueOf(slice) if rv.Kind() != reflect.Slice { return &LabelCreateBulk{err: fmt.Errorf("calling to LabelClient.MapCreateBulk with wrong type %T, need slice", slice)} } builders := make([]*LabelCreate, rv.Len()) for i := 0; i < rv.Len(); i++ { builders[i] = c.Create() setFunc(builders[i], i) } return &LabelCreateBulk{config: c.config, builders: builders} } // Update returns an update builder for Label. func (c *LabelClient) Update() *LabelUpdate { mutation := newLabelMutation(c.config, OpUpdate) return &LabelUpdate{config: c.config, hooks: c.Hooks(), mutation: mutation} } // UpdateOne returns an update builder for the given entity. func (c *LabelClient) UpdateOne(l *Label) *LabelUpdateOne { mutation := newLabelMutation(c.config, OpUpdateOne, withLabel(l)) return &LabelUpdateOne{config: c.config, hooks: c.Hooks(), mutation: mutation} } // UpdateOneID returns an update builder for the given id. func (c *LabelClient) UpdateOneID(id uint64) *LabelUpdateOne { mutation := newLabelMutation(c.config, OpUpdateOne, withLabelID(id)) return &LabelUpdateOne{config: c.config, hooks: c.Hooks(), mutation: mutation} } // Delete returns a delete builder for Label. func (c *LabelClient) Delete() *LabelDelete { mutation := newLabelMutation(c.config, OpDelete) return &LabelDelete{config: c.config, hooks: c.Hooks(), mutation: mutation} } // DeleteOne returns a builder for deleting the given entity. func (c *LabelClient) DeleteOne(l *Label) *LabelDeleteOne { return c.DeleteOneID(l.ID) } // DeleteOneID returns a builder for deleting the given entity by its id. func (c *LabelClient) DeleteOneID(id uint64) *LabelDeleteOne { builder := c.Delete().Where(label.ID(id)) builder.mutation.id = &id builder.mutation.op = OpDeleteOne return &LabelDeleteOne{builder} } // Query returns a query builder for Label. func (c *LabelClient) Query() *LabelQuery { return &LabelQuery{ config: c.config, ctx: &QueryContext{Type: TypeLabel}, inters: c.Interceptors(), } } // Get returns a Label entity by its id. func (c *LabelClient) Get(ctx context.Context, id uint64) (*Label, error) { return c.Query().Where(label.ID(id)).Only(ctx) } // GetX is like Get, but panics if an error occurs. func (c *LabelClient) GetX(ctx context.Context, id uint64) *Label { obj, err := c.Get(ctx, id) if err != nil { panic(err) } return obj } // QueryLabelRelationships queries the label_relationships edge of a Label. func (c *LabelClient) QueryLabelRelationships(l *Label) *LabelRelationshipQuery { query := (&LabelRelationshipClient{config: c.config}).Query() query.path = func(context.Context) (fromV *sql.Selector, _ error) { id := l.ID step := sqlgraph.NewStep( sqlgraph.From(label.Table, label.FieldID, id), sqlgraph.To(labelrelationship.Table, labelrelationship.FieldID), sqlgraph.Edge(sqlgraph.O2M, false, label.LabelRelationshipsTable, label.LabelRelationshipsColumn), ) fromV = sqlgraph.Neighbors(l.driver.Dialect(), step) return fromV, nil } return query } // Hooks returns the client hooks. func (c *LabelClient) Hooks() []Hook { hooks := c.hooks.Label return append(hooks[:len(hooks):len(hooks)], label.Hooks[:]...) } // Interceptors returns the client interceptors. func (c *LabelClient) Interceptors() []Interceptor { inters := c.inters.Label return append(inters[:len(inters):len(inters)], label.Interceptors[:]...) } func (c *LabelClient) mutate(ctx context.Context, m *LabelMutation) (Value, error) { switch m.Op() { case OpCreate: return (&LabelCreate{config: c.config, hooks: c.Hooks(), mutation: m}).Save(ctx) case OpUpdate: return (&LabelUpdate{config: c.config, hooks: c.Hooks(), mutation: m}).Save(ctx) case OpUpdateOne: return (&LabelUpdateOne{config: c.config, hooks: c.Hooks(), mutation: m}).Save(ctx) case OpDelete, OpDeleteOne: return (&LabelDelete{config: c.config, hooks: c.Hooks(), mutation: m}).Exec(ctx) default: return nil, fmt.Errorf("ent: unknown Label mutation op: %q", m.Op()) } } // LabelRelationshipClient is a client for the LabelRelationship schema. type LabelRelationshipClient struct { config } // NewLabelRelationshipClient returns a client for the LabelRelationship from the given config. func NewLabelRelationshipClient(c config) *LabelRelationshipClient { return &LabelRelationshipClient{config: c} } // Use adds a list of mutation hooks to the hooks stack. // A call to `Use(f, g, h)` equals to `labelrelationship.Hooks(f(g(h())))`. func (c *LabelRelationshipClient) Use(hooks ...Hook) { c.hooks.LabelRelationship = append(c.hooks.LabelRelationship, hooks...) } // Intercept adds a list of query interceptors to the interceptors stack. // A call to `Intercept(f, g, h)` equals to `labelrelationship.Intercept(f(g(h())))`. func (c *LabelRelationshipClient) Intercept(interceptors ...Interceptor) { c.inters.LabelRelationship = append(c.inters.LabelRelationship, interceptors...) } // Create returns a builder for creating a LabelRelationship entity. func (c *LabelRelationshipClient) Create() *LabelRelationshipCreate { mutation := newLabelRelationshipMutation(c.config, OpCreate) return &LabelRelationshipCreate{config: c.config, hooks: c.Hooks(), mutation: mutation} } // CreateBulk returns a builder for creating a bulk of LabelRelationship entities. func (c *LabelRelationshipClient) CreateBulk(builders ...*LabelRelationshipCreate) *LabelRelationshipCreateBulk { return &LabelRelationshipCreateBulk{config: c.config, builders: builders} } // MapCreateBulk creates a bulk creation builder from the given slice. For each item in the slice, the function creates // a builder and applies setFunc on it. func (c *LabelRelationshipClient) MapCreateBulk(slice any, setFunc func(*LabelRelationshipCreate, int)) *LabelRelationshipCreateBulk { rv := reflect.ValueOf(slice) if rv.Kind() != reflect.Slice { return &LabelRelationshipCreateBulk{err: fmt.Errorf("calling to LabelRelationshipClient.MapCreateBulk with wrong type %T, need slice", slice)} } builders := make([]*LabelRelationshipCreate, rv.Len()) for i := 0; i < rv.Len(); i++ { builders[i] = c.Create() setFunc(builders[i], i) } return &LabelRelationshipCreateBulk{config: c.config, builders: builders} } // Update returns an update builder for LabelRelationship. func (c *LabelRelationshipClient) Update() *LabelRelationshipUpdate { mutation := newLabelRelationshipMutation(c.config, OpUpdate) return &LabelRelationshipUpdate{config: c.config, hooks: c.Hooks(), mutation: mutation} } // UpdateOne returns an update builder for the given entity. func (c *LabelRelationshipClient) UpdateOne(lr *LabelRelationship) *LabelRelationshipUpdateOne { mutation := newLabelRelationshipMutation(c.config, OpUpdateOne, withLabelRelationship(lr)) return &LabelRelationshipUpdateOne{config: c.config, hooks: c.Hooks(), mutation: mutation} } // UpdateOneID returns an update builder for the given id. func (c *LabelRelationshipClient) UpdateOneID(id uint64) *LabelRelationshipUpdateOne { mutation := newLabelRelationshipMutation(c.config, OpUpdateOne, withLabelRelationshipID(id)) return &LabelRelationshipUpdateOne{config: c.config, hooks: c.Hooks(), mutation: mutation} } // Delete returns a delete builder for LabelRelationship. func (c *LabelRelationshipClient) Delete() *LabelRelationshipDelete { mutation := newLabelRelationshipMutation(c.config, OpDelete) return &LabelRelationshipDelete{config: c.config, hooks: c.Hooks(), mutation: mutation} } // DeleteOne returns a builder for deleting the given entity. func (c *LabelRelationshipClient) DeleteOne(lr *LabelRelationship) *LabelRelationshipDeleteOne { return c.DeleteOneID(lr.ID) } // DeleteOneID returns a builder for deleting the given entity by its id. func (c *LabelRelationshipClient) DeleteOneID(id uint64) *LabelRelationshipDeleteOne { builder := c.Delete().Where(labelrelationship.ID(id)) builder.mutation.id = &id builder.mutation.op = OpDeleteOne return &LabelRelationshipDeleteOne{builder} } // Query returns a query builder for LabelRelationship. func (c *LabelRelationshipClient) Query() *LabelRelationshipQuery { return &LabelRelationshipQuery{ config: c.config, ctx: &QueryContext{Type: TypeLabelRelationship}, inters: c.Interceptors(), } } // Get returns a LabelRelationship entity by its id. func (c *LabelRelationshipClient) Get(ctx context.Context, id uint64) (*LabelRelationship, error) { return c.Query().Where(labelrelationship.ID(id)).Only(ctx) } // GetX is like Get, but panics if an error occurs. func (c *LabelRelationshipClient) GetX(ctx context.Context, id uint64) *LabelRelationship { obj, err := c.Get(ctx, id) if err != nil { panic(err) } return obj } // QueryContacts queries the contacts edge of a LabelRelationship. func (c *LabelRelationshipClient) QueryContacts(lr *LabelRelationship) *ContactQuery { query := (&ContactClient{config: c.config}).Query() query.path = func(context.Context) (fromV *sql.Selector, _ error) { id := lr.ID step := sqlgraph.NewStep( sqlgraph.From(labelrelationship.Table, labelrelationship.FieldID, id), sqlgraph.To(contact.Table, contact.FieldID), sqlgraph.Edge(sqlgraph.M2O, true, labelrelationship.ContactsTable, labelrelationship.ContactsColumn), ) fromV = sqlgraph.Neighbors(lr.driver.Dialect(), step) return fromV, nil } return query } // QueryLabels queries the labels edge of a LabelRelationship. func (c *LabelRelationshipClient) QueryLabels(lr *LabelRelationship) *LabelQuery { query := (&LabelClient{config: c.config}).Query() query.path = func(context.Context) (fromV *sql.Selector, _ error) { id := lr.ID step := sqlgraph.NewStep( sqlgraph.From(labelrelationship.Table, labelrelationship.FieldID, id), sqlgraph.To(label.Table, label.FieldID), sqlgraph.Edge(sqlgraph.M2O, true, labelrelationship.LabelsTable, labelrelationship.LabelsColumn), ) fromV = sqlgraph.Neighbors(lr.driver.Dialect(), step) return fromV, nil } return query } // Hooks returns the client hooks. func (c *LabelRelationshipClient) Hooks() []Hook { hooks := c.hooks.LabelRelationship return append(hooks[:len(hooks):len(hooks)], labelrelationship.Hooks[:]...) } // Interceptors returns the client interceptors. func (c *LabelRelationshipClient) Interceptors() []Interceptor { inters := c.inters.LabelRelationship return append(inters[:len(inters):len(inters)], labelrelationship.Interceptors[:]...) } func (c *LabelRelationshipClient) mutate(ctx context.Context, m *LabelRelationshipMutation) (Value, error) { switch m.Op() { case OpCreate: return (&LabelRelationshipCreate{config: c.config, hooks: c.Hooks(), mutation: m}).Save(ctx) case OpUpdate: return (&LabelRelationshipUpdate{config: c.config, hooks: c.Hooks(), mutation: m}).Save(ctx) case OpUpdateOne: return (&LabelRelationshipUpdateOne{config: c.config, hooks: c.Hooks(), mutation: m}).Save(ctx) case OpDelete, OpDeleteOne: return (&LabelRelationshipDelete{config: c.config, hooks: c.Hooks(), mutation: m}).Exec(ctx) default: return nil, fmt.Errorf("ent: unknown LabelRelationship mutation op: %q", m.Op()) } } // MessageClient is a client for the Message schema. type MessageClient struct { config } // NewMessageClient returns a client for the Message from the given config. func NewMessageClient(c config) *MessageClient { return &MessageClient{config: c} } // Use adds a list of mutation hooks to the hooks stack. // A call to `Use(f, g, h)` equals to `message.Hooks(f(g(h())))`. func (c *MessageClient) Use(hooks ...Hook) { c.hooks.Message = append(c.hooks.Message, hooks...) } // Intercept adds a list of query interceptors to the interceptors stack. // A call to `Intercept(f, g, h)` equals to `message.Intercept(f(g(h())))`. func (c *MessageClient) Intercept(interceptors ...Interceptor) { c.inters.Message = append(c.inters.Message, interceptors...) } // Create returns a builder for creating a Message entity. func (c *MessageClient) Create() *MessageCreate { mutation := newMessageMutation(c.config, OpCreate) return &MessageCreate{config: c.config, hooks: c.Hooks(), mutation: mutation} } // CreateBulk returns a builder for creating a bulk of Message entities. func (c *MessageClient) CreateBulk(builders ...*MessageCreate) *MessageCreateBulk { return &MessageCreateBulk{config: c.config, builders: builders} } // MapCreateBulk creates a bulk creation builder from the given slice. For each item in the slice, the function creates // a builder and applies setFunc on it. func (c *MessageClient) MapCreateBulk(slice any, setFunc func(*MessageCreate, int)) *MessageCreateBulk { rv := reflect.ValueOf(slice) if rv.Kind() != reflect.Slice { return &MessageCreateBulk{err: fmt.Errorf("calling to MessageClient.MapCreateBulk with wrong type %T, need slice", slice)} } builders := make([]*MessageCreate, rv.Len()) for i := 0; i < rv.Len(); i++ { builders[i] = c.Create() setFunc(builders[i], i) } return &MessageCreateBulk{config: c.config, builders: builders} } // Update returns an update builder for Message. func (c *MessageClient) Update() *MessageUpdate { mutation := newMessageMutation(c.config, OpUpdate) return &MessageUpdate{config: c.config, hooks: c.Hooks(), mutation: mutation} } // UpdateOne returns an update builder for the given entity. func (c *MessageClient) UpdateOne(m *Message) *MessageUpdateOne { mutation := newMessageMutation(c.config, OpUpdateOne, withMessage(m)) return &MessageUpdateOne{config: c.config, hooks: c.Hooks(), mutation: mutation} } // UpdateOneID returns an update builder for the given id. func (c *MessageClient) UpdateOneID(id int) *MessageUpdateOne { mutation := newMessageMutation(c.config, OpUpdateOne, withMessageID(id)) return &MessageUpdateOne{config: c.config, hooks: c.Hooks(), mutation: mutation} } // Delete returns a delete builder for Message. func (c *MessageClient) Delete() *MessageDelete { mutation := newMessageMutation(c.config, OpDelete) return &MessageDelete{config: c.config, hooks: c.Hooks(), mutation: mutation} } // DeleteOne returns a builder for deleting the given entity. func (c *MessageClient) DeleteOne(m *Message) *MessageDeleteOne { return c.DeleteOneID(m.ID) } // DeleteOneID returns a builder for deleting the given entity by its id. func (c *MessageClient) DeleteOneID(id int) *MessageDeleteOne { builder := c.Delete().Where(message.ID(id)) builder.mutation.id = &id builder.mutation.op = OpDeleteOne return &MessageDeleteOne{builder} } // Query returns a query builder for Message. func (c *MessageClient) Query() *MessageQuery { return &MessageQuery{ config: c.config, ctx: &QueryContext{Type: TypeMessage}, inters: c.Interceptors(), } } // Get returns a Message entity by its id. func (c *MessageClient) Get(ctx context.Context, id int) (*Message, error) { return c.Query().Where(message.ID(id)).Only(ctx) } // GetX is like Get, but panics if an error occurs. func (c *MessageClient) GetX(ctx context.Context, id int) *Message { obj, err := c.Get(ctx, id) if err != nil { panic(err) } return obj } // Hooks returns the client hooks. func (c *MessageClient) Hooks() []Hook { return c.hooks.Message } // Interceptors returns the client interceptors. func (c *MessageClient) Interceptors() []Interceptor { return c.inters.Message } func (c *MessageClient) mutate(ctx context.Context, m *MessageMutation) (Value, error) { switch m.Op() { case OpCreate: return (&MessageCreate{config: c.config, hooks: c.Hooks(), mutation: m}).Save(ctx) case OpUpdate: return (&MessageUpdate{config: c.config, hooks: c.Hooks(), mutation: m}).Save(ctx) case OpUpdateOne: return (&MessageUpdateOne{config: c.config, hooks: c.Hooks(), mutation: m}).Save(ctx) case OpDelete, OpDeleteOne: return (&MessageDelete{config: c.config, hooks: c.Hooks(), mutation: m}).Exec(ctx) default: return nil, fmt.Errorf("ent: unknown Message mutation op: %q", m.Op()) } } // ServerClient is a client for the Server schema. type ServerClient struct { config } // NewServerClient returns a client for the Server from the given config. func NewServerClient(c config) *ServerClient { return &ServerClient{config: c} } // Use adds a list of mutation hooks to the hooks stack. // A call to `Use(f, g, h)` equals to `server.Hooks(f(g(h())))`. func (c *ServerClient) Use(hooks ...Hook) { c.hooks.Server = append(c.hooks.Server, hooks...) } // Intercept adds a list of query interceptors to the interceptors stack. // A call to `Intercept(f, g, h)` equals to `server.Intercept(f(g(h())))`. func (c *ServerClient) Intercept(interceptors ...Interceptor) { c.inters.Server = append(c.inters.Server, interceptors...) } // Create returns a builder for creating a Server entity. func (c *ServerClient) Create() *ServerCreate { mutation := newServerMutation(c.config, OpCreate) return &ServerCreate{config: c.config, hooks: c.Hooks(), mutation: mutation} } // CreateBulk returns a builder for creating a bulk of Server entities. func (c *ServerClient) CreateBulk(builders ...*ServerCreate) *ServerCreateBulk { return &ServerCreateBulk{config: c.config, builders: builders} } // MapCreateBulk creates a bulk creation builder from the given slice. For each item in the slice, the function creates // a builder and applies setFunc on it. func (c *ServerClient) MapCreateBulk(slice any, setFunc func(*ServerCreate, int)) *ServerCreateBulk { rv := reflect.ValueOf(slice) if rv.Kind() != reflect.Slice { return &ServerCreateBulk{err: fmt.Errorf("calling to ServerClient.MapCreateBulk with wrong type %T, need slice", slice)} } builders := make([]*ServerCreate, rv.Len()) for i := 0; i < rv.Len(); i++ { builders[i] = c.Create() setFunc(builders[i], i) } return &ServerCreateBulk{config: c.config, builders: builders} } // Update returns an update builder for Server. func (c *ServerClient) Update() *ServerUpdate { mutation := newServerMutation(c.config, OpUpdate) return &ServerUpdate{config: c.config, hooks: c.Hooks(), mutation: mutation} } // UpdateOne returns an update builder for the given entity. func (c *ServerClient) UpdateOne(s *Server) *ServerUpdateOne { mutation := newServerMutation(c.config, OpUpdateOne, withServer(s)) return &ServerUpdateOne{config: c.config, hooks: c.Hooks(), mutation: mutation} } // UpdateOneID returns an update builder for the given id. func (c *ServerClient) UpdateOneID(id uint64) *ServerUpdateOne { mutation := newServerMutation(c.config, OpUpdateOne, withServerID(id)) return &ServerUpdateOne{config: c.config, hooks: c.Hooks(), mutation: mutation} } // Delete returns a delete builder for Server. func (c *ServerClient) Delete() *ServerDelete { mutation := newServerMutation(c.config, OpDelete) return &ServerDelete{config: c.config, hooks: c.Hooks(), mutation: mutation} } // DeleteOne returns a builder for deleting the given entity. func (c *ServerClient) DeleteOne(s *Server) *ServerDeleteOne { return c.DeleteOneID(s.ID) } // DeleteOneID returns a builder for deleting the given entity by its id. func (c *ServerClient) DeleteOneID(id uint64) *ServerDeleteOne { builder := c.Delete().Where(server.ID(id)) builder.mutation.id = &id builder.mutation.op = OpDeleteOne return &ServerDeleteOne{builder} } // Query returns a query builder for Server. func (c *ServerClient) Query() *ServerQuery { return &ServerQuery{ config: c.config, ctx: &QueryContext{Type: TypeServer}, inters: c.Interceptors(), } } // Get returns a Server entity by its id. func (c *ServerClient) Get(ctx context.Context, id uint64) (*Server, error) { return c.Query().Where(server.ID(id)).Only(ctx) } // GetX is like Get, but panics if an error occurs. func (c *ServerClient) GetX(ctx context.Context, id uint64) *Server { obj, err := c.Get(ctx, id) if err != nil { panic(err) } return obj } // QueryWxs queries the wxs edge of a Server. func (c *ServerClient) QueryWxs(s *Server) *WxQuery { query := (&WxClient{config: c.config}).Query() query.path = func(context.Context) (fromV *sql.Selector, _ error) { id := s.ID step := sqlgraph.NewStep( sqlgraph.From(server.Table, server.FieldID, id), sqlgraph.To(wx.Table, wx.FieldID), sqlgraph.Edge(sqlgraph.O2M, false, server.WxsTable, server.WxsColumn), ) fromV = sqlgraph.Neighbors(s.driver.Dialect(), step) return fromV, nil } return query } // Hooks returns the client hooks. func (c *ServerClient) Hooks() []Hook { hooks := c.hooks.Server return append(hooks[:len(hooks):len(hooks)], server.Hooks[:]...) } // Interceptors returns the client interceptors. func (c *ServerClient) Interceptors() []Interceptor { inters := c.inters.Server return append(inters[:len(inters):len(inters)], server.Interceptors[:]...) } func (c *ServerClient) mutate(ctx context.Context, m *ServerMutation) (Value, error) { switch m.Op() { case OpCreate: return (&ServerCreate{config: c.config, hooks: c.Hooks(), mutation: m}).Save(ctx) case OpUpdate: return (&ServerUpdate{config: c.config, hooks: c.Hooks(), mutation: m}).Save(ctx) case OpUpdateOne: return (&ServerUpdateOne{config: c.config, hooks: c.Hooks(), mutation: m}).Save(ctx) case OpDelete, OpDeleteOne: return (&ServerDelete{config: c.config, hooks: c.Hooks(), mutation: m}).Exec(ctx) default: return nil, fmt.Errorf("ent: unknown Server mutation op: %q", m.Op()) } } // WxClient is a client for the Wx schema. type WxClient struct { config } // NewWxClient returns a client for the Wx from the given config. func NewWxClient(c config) *WxClient { return &WxClient{config: c} } // Use adds a list of mutation hooks to the hooks stack. // A call to `Use(f, g, h)` equals to `wx.Hooks(f(g(h())))`. func (c *WxClient) Use(hooks ...Hook) { c.hooks.Wx = append(c.hooks.Wx, hooks...) } // Intercept adds a list of query interceptors to the interceptors stack. // A call to `Intercept(f, g, h)` equals to `wx.Intercept(f(g(h())))`. func (c *WxClient) Intercept(interceptors ...Interceptor) { c.inters.Wx = append(c.inters.Wx, interceptors...) } // Create returns a builder for creating a Wx entity. func (c *WxClient) Create() *WxCreate { mutation := newWxMutation(c.config, OpCreate) return &WxCreate{config: c.config, hooks: c.Hooks(), mutation: mutation} } // CreateBulk returns a builder for creating a bulk of Wx entities. func (c *WxClient) CreateBulk(builders ...*WxCreate) *WxCreateBulk { return &WxCreateBulk{config: c.config, builders: builders} } // MapCreateBulk creates a bulk creation builder from the given slice. For each item in the slice, the function creates // a builder and applies setFunc on it. func (c *WxClient) MapCreateBulk(slice any, setFunc func(*WxCreate, int)) *WxCreateBulk { rv := reflect.ValueOf(slice) if rv.Kind() != reflect.Slice { return &WxCreateBulk{err: fmt.Errorf("calling to WxClient.MapCreateBulk with wrong type %T, need slice", slice)} } builders := make([]*WxCreate, rv.Len()) for i := 0; i < rv.Len(); i++ { builders[i] = c.Create() setFunc(builders[i], i) } return &WxCreateBulk{config: c.config, builders: builders} } // Update returns an update builder for Wx. func (c *WxClient) Update() *WxUpdate { mutation := newWxMutation(c.config, OpUpdate) return &WxUpdate{config: c.config, hooks: c.Hooks(), mutation: mutation} } // UpdateOne returns an update builder for the given entity. func (c *WxClient) UpdateOne(w *Wx) *WxUpdateOne { mutation := newWxMutation(c.config, OpUpdateOne, withWx(w)) return &WxUpdateOne{config: c.config, hooks: c.Hooks(), mutation: mutation} } // UpdateOneID returns an update builder for the given id. func (c *WxClient) UpdateOneID(id uint64) *WxUpdateOne { mutation := newWxMutation(c.config, OpUpdateOne, withWxID(id)) return &WxUpdateOne{config: c.config, hooks: c.Hooks(), mutation: mutation} } // Delete returns a delete builder for Wx. func (c *WxClient) Delete() *WxDelete { mutation := newWxMutation(c.config, OpDelete) return &WxDelete{config: c.config, hooks: c.Hooks(), mutation: mutation} } // DeleteOne returns a builder for deleting the given entity. func (c *WxClient) DeleteOne(w *Wx) *WxDeleteOne { return c.DeleteOneID(w.ID) } // DeleteOneID returns a builder for deleting the given entity by its id. func (c *WxClient) DeleteOneID(id uint64) *WxDeleteOne { builder := c.Delete().Where(wx.ID(id)) builder.mutation.id = &id builder.mutation.op = OpDeleteOne return &WxDeleteOne{builder} } // Query returns a query builder for Wx. func (c *WxClient) Query() *WxQuery { return &WxQuery{ config: c.config, ctx: &QueryContext{Type: TypeWx}, inters: c.Interceptors(), } } // Get returns a Wx entity by its id. func (c *WxClient) Get(ctx context.Context, id uint64) (*Wx, error) { return c.Query().Where(wx.ID(id)).Only(ctx) } // GetX is like Get, but panics if an error occurs. func (c *WxClient) GetX(ctx context.Context, id uint64) *Wx { obj, err := c.Get(ctx, id) if err != nil { panic(err) } return obj } // QueryServer queries the server edge of a Wx. func (c *WxClient) QueryServer(w *Wx) *ServerQuery { query := (&ServerClient{config: c.config}).Query() query.path = func(context.Context) (fromV *sql.Selector, _ error) { id := w.ID step := sqlgraph.NewStep( sqlgraph.From(wx.Table, wx.FieldID, id), sqlgraph.To(server.Table, server.FieldID), sqlgraph.Edge(sqlgraph.M2O, true, wx.ServerTable, wx.ServerColumn), ) fromV = sqlgraph.Neighbors(w.driver.Dialect(), step) return fromV, nil } return query } // Hooks returns the client hooks. func (c *WxClient) Hooks() []Hook { hooks := c.hooks.Wx return append(hooks[:len(hooks):len(hooks)], wx.Hooks[:]...) } // Interceptors returns the client interceptors. func (c *WxClient) Interceptors() []Interceptor { inters := c.inters.Wx return append(inters[:len(inters):len(inters)], wx.Interceptors[:]...) } func (c *WxClient) mutate(ctx context.Context, m *WxMutation) (Value, error) { switch m.Op() { case OpCreate: return (&WxCreate{config: c.config, hooks: c.Hooks(), mutation: m}).Save(ctx) case OpUpdate: return (&WxUpdate{config: c.config, hooks: c.Hooks(), mutation: m}).Save(ctx) case OpUpdateOne: return (&WxUpdateOne{config: c.config, hooks: c.Hooks(), mutation: m}).Save(ctx) case OpDelete, OpDeleteOne: return (&WxDelete{config: c.config, hooks: c.Hooks(), mutation: m}).Exec(ctx) default: return nil, fmt.Errorf("ent: unknown Wx mutation op: %q", m.Op()) } } // hooks and interceptors per client, for fast access. type ( hooks struct { Contact, Label, LabelRelationship, Message, Server, Wx []ent.Hook } inters struct { Contact, Label, LabelRelationship, Message, Server, Wx []ent.Interceptor } ) // ExecContext allows calling the underlying ExecContext method of the driver if it is supported by it. // See, database/sql#DB.ExecContext for more information. func (c *config) ExecContext(ctx context.Context, query string, args ...any) (stdsql.Result, error) { ex, ok := c.driver.(interface { ExecContext(context.Context, string, ...any) (stdsql.Result, error) }) if !ok { return nil, fmt.Errorf("Driver.ExecContext is not supported") } return ex.ExecContext(ctx, query, args...) } // QueryContext allows calling the underlying QueryContext method of the driver if it is supported by it. // See, database/sql#DB.QueryContext for more information. func (c *config) QueryContext(ctx context.Context, query string, args ...any) (*stdsql.Rows, error) { q, ok := c.driver.(interface { QueryContext(context.Context, string, ...any) (*stdsql.Rows, error) }) if !ok { return nil, fmt.Errorf("Driver.QueryContext is not supported") } return q.QueryContext(ctx, query, args...) }