Documentation ¶
Index ¶
- Constants
- Variables
- func Except(cols []string, excludes ...string) []string
- func Only(cols []string, includes ...string) []string
- func SkipHooks(ctx context.Context) context.Context
- func SkipModelHooks(ctx context.Context) context.Context
- func SkipQueryHooks(ctx context.Context) context.Context
- type Columns
- func (c Columns) Except(cols ...string) Columns
- func (c Columns) Names() []string
- func (c Columns) Only(cols ...string) Columns
- func (c Columns) WithAggFunc(a, b string) Columns
- func (c Columns) WithParent(p ...string) Columns
- func (c Columns) WithPrefix(prefix string) Columns
- func (c Columns) WriteSQL(w io.Writer, d bob.Dialect, start int) ([]any, error)
- type Hook
- type Hooks
- type RelSetDetails
- type RelSetMapping
- type RelSide
- type RelWhere
- type Relationship
- func (r Relationship) Foreign() string
- func (r Relationship) ForeignPosition() int
- func (r Relationship) InsertEarly() bool
- func (r Relationship) IsRemovable() bool
- func (r Relationship) IsToMany() bool
- func (r Relationship) Local() string
- func (r Relationship) LocalPosition() int
- func (r Relationship) NeedsMany(position int) bool
- func (r Relationship) Validate() error
- func (r Relationship) ValuedSides() []RelSetDetails
- type RelationshipChainError
- type Setter
- type SkipModelHooksKey
- type SkipQueryHooksKey
- type Table
Constants ¶
const ( // The alias of an eager loader's parent CtxLoadParentAlias ctxKey = iota // A schema to use when non was specified during generation CtxUseSchema )
Variables ¶
Functions ¶
func SkipHooks ¶ added in v0.2.3
SkipHooks modifies a context to prevent hooks from running for any query it encounters.
func SkipModelHooks ¶ added in v0.22.0
SkipModelHooks modifies a context to prevent hooks from running on models.
Types ¶
type Columns ¶
type Columns struct {
// contains filtered or unexported fields
}
func NewColumns ¶
NewColumns returns a Columns object with the given column names
func (Columns) WithAggFunc ¶
func (Columns) WithParent ¶
WithPrefix sets the parent of the columns
func (Columns) WithPrefix ¶
WithPrefix sets the prefix of the aliases of the column set
type Hook ¶ added in v0.2.3
Hook is a function that can be called during lifecycle of an object the context can be modified and returned The caller is expected to use the returned context for subsequent processing
type Hooks ¶ added in v0.2.3
Hooks is a set of hooks that can be called all at once
type RelSetDetails ¶ added in v0.6.1
type RelSetDetails struct { TableName string Mapped []RelSetMapping Position int Start bool End bool }
func (RelSetDetails) Columns ¶ added in v0.23.0
func (r RelSetDetails) Columns() []string
func (RelSetDetails) UniqueExternals ¶ added in v0.22.0
func (r RelSetDetails) UniqueExternals() []RelSetMapping
type RelSetMapping ¶ added in v0.6.1
type RelSetMapping struct { Column string Value [2]string // [0] is the SQL value, [1] is the Go value ExternalTable string ExternalColumn string ExtPosition int ExternalStart bool ExternalEnd bool }
func (RelSetMapping) HasValue ¶ added in v0.23.0
func (r RelSetMapping) HasValue() bool
type RelSide ¶ added in v0.2.1
type RelSide struct { From string `yaml:"from"` To string `yaml:"to"` // To make sure the column lengths match and are in the right order, // a slice of tupules is expected. // bobgen-helpers.GenConfig has a function to spread that into From/ToColumns Columns [][2]string `yaml:"columns"` FromColumns []string `yaml:"-"` ToColumns []string `yaml:"-"` FromWhere []RelWhere `yaml:"from_where"` ToWhere []RelWhere `yaml:"to_where"` // These are columns that exist in the database, but should not be // considered by the relationship when determining if it is a join table // the columns are never set or read, so make sure they have a default value // or operations will fail // the first slice is for the from table, the second is for the to table IgnoredColumns [2][]string `yaml:"-"` // if the origin is unique FromUnique bool `yaml:"-"` // if the destination is unique ToUnique bool `yaml:"-"` // Which side to modify, "from" or "to" // If not set, it will try to "guess" which side to modify // - if only one of the sides contains a primary key, // it will choose to modify the other side // - If (both or none) of them contains a primary key, // it will try with "Unique" columns // - If it still cannot choose, it defaults to "to" Modify string `yaml:"modify"` // If the key is nullable. We need this to know if we can remove the // relationship without deleting it // this is set in Relationships.init() KeyNullable bool `yaml:"-"` // Kinda hacky, used for preloading ToExpr func(context.Context) bob.Expression `json:"-" yaml:"-"` }
type Relationship ¶
type Relationship struct { Name string `yaml:"name"` Sides []RelSide `yaml:"sides"` // These can be set through user configuration Ignored bool // Do not create the inverse of a user configured relationship NoReverse bool `yaml:"no_reverse"` }
func (Relationship) Foreign ¶ added in v0.6.1
func (r Relationship) Foreign() string
func (Relationship) ForeignPosition ¶ added in v0.22.0
func (r Relationship) ForeignPosition() int
func (Relationship) InsertEarly ¶ added in v0.6.1
func (r Relationship) InsertEarly() bool
func (Relationship) IsRemovable ¶ added in v0.6.1
func (r Relationship) IsRemovable() bool
func (Relationship) IsToMany ¶ added in v0.6.1
func (r Relationship) IsToMany() bool
func (Relationship) Local ¶ added in v0.6.1
func (r Relationship) Local() string
func (Relationship) LocalPosition ¶ added in v0.22.0
func (r Relationship) LocalPosition() int
func (Relationship) NeedsMany ¶ added in v0.23.0
func (r Relationship) NeedsMany(position int) bool
NeedsMany returns true if the table on this side needs to be many
func (Relationship) Validate ¶ added in v0.23.0
func (r Relationship) Validate() error
func (Relationship) ValuedSides ¶ added in v0.6.1
func (r Relationship) ValuedSides() []RelSetDetails
type RelationshipChainError ¶ added in v0.6.1
type RelationshipChainError struct { Table1 string Column1 string Value string Table2 string Column2 string }
RelationshipChainError is the error returned when a wrong value is encountered in a relationship chain
func (*RelationshipChainError) Error ¶ added in v0.6.1
func (e *RelationshipChainError) Error() string
type Setter ¶ added in v0.22.0
type Setter[T any, InsertQ any, UpdateQ any] interface { // SetColumns should return the column names that are set SetColumns() []string // Overwrite the values in T with the set values in the setter Overwrite(T) // Act as a mod for the update query bob.Mod[UpdateQ] // Return a mod for the insert query InsertMod() bob.Mod[InsertQ] }
type SkipModelHooksKey ¶ added in v0.22.0
type SkipModelHooksKey struct{}
If set to true, model hooks are skipped
type SkipQueryHooksKey ¶ added in v0.22.0
type SkipQueryHooksKey struct{}
If set to true, query hooks are skipped
type Table ¶ added in v0.22.0
type Table interface { // PrimaryKeyVals returns the values of the primary key columns // If a single column, expr.Arg(col) is expected // If multiple columns, expr.ArgGroup(col1, col2, ...) is expected PrimaryKeyVals() bob.Expression }