Documentation
¶
Overview ¶
Example (CompositeKey) ¶
Example_compositeKey demonstrates usage with a composite key
// Created at 2026-06-28
package main
import (
"fmt"
"github.com/mirrorru/qqm"
"github.com/mirrorru/qqm/dialect"
)
// OrgUser — структура с составным ключом
type OrgUser struct {
OrgID int64 `qqm:"pk"`
UserID int64 `qqm:"pk"`
Name string
Email string
}
func (o *OrgUser) SQLName() string { return "org_users" }
// Example_compositeKey demonstrates usage with a composite key
func main() {
orgUserTable := qqm.NewTable[OrgUser](dialect.SQLiteDialect{})
fmt.Println("INSERT:", orgUserTable.Internals().InsertSQL())
fmt.Println("UPDATE:", orgUserTable.Internals().UpdateSQL())
fmt.Println("SELECT:", orgUserTable.Internals().SelectSQL())
fmt.Println("DELETE:", orgUserTable.Internals().DeleteSQL())
meta := orgUserTable.Internals().Meta()
fmt.Println("Table:", meta.TableName)
fmt.Println("Columns:", meta.Columns)
fmt.Println("PK count:", len(meta.PKFields))
for _, pk := range meta.PKFields {
fmt.Printf(" PK: %s (order: %d)\n", pk.Column, pk.PkOrder)
}
}
Output: INSERT: INSERT INTO org_users (org_id, user_id, name, email) VALUES (?, ?, ?, ?) RETURNING org_id, user_id, name, email UPDATE: UPDATE org_users SET name = ?, email = ? WHERE org_id = ? AND user_id = ? SELECT: SELECT org_id, user_id, name, email FROM org_users WHERE org_id = ? AND user_id = ? DELETE: DELETE FROM org_users WHERE org_id = ? AND user_id = ? Table: org_users Columns: [org_id user_id name email] PK count: 2 PK: org_id (order: 1) PK: user_id (order: 2)
Example (SimpleKey) ¶
Example_simpleKey demonstrates usage with a simple key
// Created at 2026-06-28
package main
import (
"fmt"
"github.com/mirrorru/qqm"
"github.com/mirrorru/qqm/dialect"
)
// User — структура с простым ключом
type User struct {
ID int64 `qqm:"pk"`
Name string
Email string
Age int
}
// Example_simpleKey demonstrates usage with a simple key
func main() {
userTable := qqm.NewTable[User](dialect.SQLiteDialect{})
fmt.Println("INSERT:", userTable.Internals().InsertSQL())
fmt.Println("UPDATE:", userTable.Internals().UpdateSQL())
fmt.Println("SELECT:", userTable.Internals().SelectSQL())
fmt.Println("DELETE:", userTable.Internals().DeleteSQL())
meta := userTable.Internals().Meta()
fmt.Println("Table:", meta.TableName)
fmt.Println("Columns:", meta.Columns)
}
Output: INSERT: INSERT INTO user (id, name, email, age) VALUES (?, ?, ?, ?) RETURNING id, name, email, age UPDATE: UPDATE user SET name = ?, email = ?, age = ? WHERE id = ? SELECT: SELECT id, name, email, age FROM user WHERE id = ? DELETE: DELETE FROM user WHERE id = ? Table: user Columns: [id name email age]
Index ¶
- Variables
- type CRUD
- type Condition
- type ConditionOp
- type FieldFilter
- type Filter
- type FilterOp
- type Query
- type SQLNamer
- type Table
- func (t *Table[ROW]) Delete(ctx context.Context, ex executor.Executor, keys ...any) error
- func (t *Table[ROW]) GetByPK(ctx context.Context, ex executor.Executor, keys ...any) (*ROW, error)
- func (t *Table[ROW]) Insert(ctx context.Context, ex executor.Executor, src *ROW) (*ROW, error)
- func (t *Table[ROW]) Internals() *tableInternals
- func (t *Table[ROW]) List(ctx context.Context, ex executor.Executor, filters ...Filter) ([]*ROW, error)
- func (t *Table[ROW]) Update(ctx context.Context, ex executor.Executor, src *ROW) error
Examples ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( SQLiteDialect = dialect.SQLiteDialect{} PostgreSQLDialect = dialect.PostgreSQLDialect{} )
Functions ¶
This section is empty.
Types ¶
type CRUD ¶ added in v0.1.4
type CRUD[ROW any] interface { Internals() *tableInternals Insert(ctx context.Context, ex executor.Executor, src *ROW) (*ROW, error) Update(ctx context.Context, ex executor.Executor, src *ROW) error GetByPK(ctx context.Context, ex executor.Executor, keys ...any) (*ROW, error) Delete(ctx context.Context, ex executor.Executor, keys ...any) error List(ctx context.Context, ex executor.Executor, filters ...Filter) ([]*ROW, error) }
type Condition ¶
type Condition struct {
Op ConditionOp
Value any
}
type ConditionOp ¶
type ConditionOp int
const ( OpEq ConditionOp = iota OpGt OpLt OpGte OpLte OpBetween OpIn )
type FieldFilter ¶
type Filter ¶
type Filter struct {
Fields []FieldFilter
Op FilterOp
}
func AndFilter ¶
func AndFilter(fields ...FieldFilter) Filter
func OrFilter ¶
func OrFilter(fields ...FieldFilter) Filter
type Query ¶ added in v0.1.4
type Query[QROW any] struct { // contains filtered or unexported fields }
Click to show internal directories.
Click to hide internal directories.