123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692 |
- // 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/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
- // 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.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),
- 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),
- 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) {
- c.Contact.Use(hooks...)
- c.Server.Use(hooks...)
- c.Wx.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) {
- c.Contact.Intercept(interceptors...)
- c.Server.Intercept(interceptors...)
- c.Wx.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 *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
- }
- // 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())
- }
- }
- // 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, Server, Wx []ent.Hook
- }
- inters struct {
- Contact, 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...)
- }
|