Documentation
¶
Overview ¶
Example (CompositeKey) ¶
Example_compositeKey demonstrates usage with a composite key
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
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
- func SetTagName(newTagVal string) string
- type CRUD
- type Condition
- type ConditionOp
- type DBAdapter
- type Executor
- type FieldFilter
- type Filter
- type FilterOp
- type PGXAdapter
- type PGXTxAdapter
- type PgxResult
- type PgxRows
- type Query
- type Result
- type Row
- type Rows
- type SQLNamer
- type Table
- func (t *Table[ROW]) Delete(ctx context.Context, ex Executor, keys ...any) error
- func (t *Table[ROW]) GetByPK(ctx context.Context, ex Executor, keys ...any) (*ROW, error)
- func (t *Table[ROW]) Insert(ctx context.Context, ex Executor, src *ROW) (*ROW, error)
- func (t *Table[ROW]) Internals() *tableInternals
- func (t *Table[ROW]) List(ctx context.Context, ex Executor, filters ...Filter) ([]*ROW, error)
- func (t *Table[ROW]) Update(ctx context.Context, ex Executor, src *ROW) error
- type TxAdapter
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var ( SQLiteDialect = dialect.SQLiteDialect{} PostgreSQLDialect = dialect.PostgreSQLDialect{} )
Functions ¶
func SetTagName ¶ added in v0.1.7
SetTagName устанавливает имя тега для парсинга метаданных. EN: SetTagName sets the tag name for metadata parsing.
Types ¶
type CRUD ¶ added in v0.1.4
type CRUD[ROW any] interface { Internals() *tableInternals Insert(ctx context.Context, ex Executor, src *ROW) (*ROW, error) Update(ctx context.Context, ex Executor, src *ROW) error GetByPK(ctx context.Context, ex Executor, keys ...any) (*ROW, error) Delete(ctx context.Context, ex Executor, keys ...any) error List(ctx context.Context, ex 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 DBAdapter ¶ added in v0.1.6
type DBAdapter struct {
// contains filtered or unexported fields
}
DBAdapter адаптирует *sql.DB к интерфейсу Executor. EN: DBAdapter adapts *sql.DB to the Executor interface.
func NewDBAdapterVal ¶ added in v0.1.6
NewDBAdapterVal создаёт адаптер для *sql.DB к интерфейсу Executor. EN: NewDBAdapterVal creates an adapter from *sql.DB to the Executor interface.
func (DBAdapter) ExecContext ¶ added in v0.1.6
ExecContext выполняет запрос, не возвращающий строк. EN: ExecContext executes a query that does not return rows.
func (DBAdapter) QueryContext ¶ added in v0.1.6
QueryContext выполняет запрос, возвращающий строки. EN: QueryContext executes a query that returns rows.
type Executor ¶ added in v0.1.6
type Executor interface {
ExecContext(ctx context.Context, query string, args ...any) (Result, error)
QueryContext(ctx context.Context, query string, args ...any) (Rows, error)
QueryRowContext(ctx context.Context, query string, args ...any) Row
}
Executor описывает интерфейс выполнения SQL-запросов. Абстрагирует database/sql.DB, database/sql.Tx, pgx.Conn, pgx.Tx. EN: Executor describes the SQL execution interface. Abstracts database/sql.DB, database/sql.Tx, pgx.Conn, pgx.Tx.
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 PGXAdapter ¶ added in v0.1.6
type PGXAdapter struct {
// contains filtered or unexported fields
}
PGXAdapter адаптирует *pgx.Conn к интерфейсу Executor. EN: PGXAdapter adapts *pgx.Conn to the Executor interface.
func NewPGXAdapterVal ¶ added in v0.1.6
func NewPGXAdapterVal(conn *pgx.Conn) PGXAdapter
NewPGXAdapterVal создаёт адаптер для *pgx.Conn к интерфейсу Executor. EN: NewPGXAdapterVal creates an adapter from *pgx.Conn to the Executor interface.
func (PGXAdapter) ExecContext ¶ added in v0.1.6
func (PGXAdapter) QueryContext ¶ added in v0.1.6
func (PGXAdapter) QueryRowContext ¶ added in v0.1.6
type PGXTxAdapter ¶ added in v0.1.6
type PGXTxAdapter struct {
// contains filtered or unexported fields
}
PGXTxAdapter адаптирует pgx.Tx к интерфейсу Executor. EN: PGXTxAdapter adapts pgx.Tx to the Executor interface.
func NewPGXTxAdapterVal ¶ added in v0.1.6
func NewPGXTxAdapterVal(tx pgx.Tx) PGXTxAdapter
NewPGXTxAdapterVal создаёт адаптер для pgx.Tx к интерфейсу Executor. EN: NewPGXTxAdapterVal creates an adapter from pgx.Tx to the Executor interface.
func (PGXTxAdapter) ExecContext ¶ added in v0.1.6
func (PGXTxAdapter) QueryContext ¶ added in v0.1.6
func (PGXTxAdapter) QueryRowContext ¶ added in v0.1.6
type PgxResult ¶ added in v0.1.6
type PgxResult struct {
// contains filtered or unexported fields
}
PgxResult адаптирует pgconn.CommandTag к интерфейсу Result. EN: PgxResult adapts pgconn.CommandTag to the Result interface.
func (*PgxResult) LastInsertId ¶ added in v0.1.6
func (*PgxResult) RowsAffected ¶ added in v0.1.6
type PgxRows ¶ added in v0.1.6
type PgxRows struct {
// contains filtered or unexported fields
}
PgxRows адаптирует pgx.Rows к интерфейсу Rows. EN: PgxRows adapts pgx.Rows to the Rows interface.
type Query ¶ added in v0.1.4
type Query[QROW any] struct { // contains filtered or unexported fields }
type Result ¶ added in v0.1.6
Result представляет результат выполнения ExecContext. EN: Result represents the result of ExecContext execution.
type Row ¶ added in v0.1.6
Row представляет одну строку результата запроса. EN: Row represents a single query result row.
type Rows ¶ added in v0.1.6
Rows представляет курсор результатов запроса. EN: Rows represents a query result cursor.
type Table ¶ added in v0.1.4
type Table[ROW any] struct { // contains filtered or unexported fields }
type TxAdapter ¶ added in v0.1.6
type TxAdapter struct {
// contains filtered or unexported fields
}
TxAdapter адаптирует *sql.Tx к интерфейсу Executor. EN: TxAdapter adapts *sql.Tx to the Executor interface.
func NewTxAdapterVal ¶ added in v0.1.6
NewTxAdapterVal создаёт адаптер для *sql.Tx к интерфейсу Executor. EN: NewTxAdapterVal creates an adapter from *sql.Tx to the Executor interface.
func (TxAdapter) ExecContext ¶ added in v0.1.6
ExecContext выполняет запрос, не возвращающий строк. EN: ExecContext executes a query that does not return rows.
func (TxAdapter) QueryContext ¶ added in v0.1.6
QueryContext выполняет запрос, возвращающий строки. EN: QueryContext executes a query that returns rows.