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 = ? RETURNING org_id, user_id, name, email 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 = ? RETURNING id, name, email, age 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) (*ROW, error)
- type TxAdapter
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var ( // SQLiteDialect — предопределённый диалект SQLite. // EN: SQLiteDialect — predefined SQLite dialect. SQLiteDialect = dialect.SQLiteDialect{} // PostgreSQLDialect — предопределённый диалект PostgreSQL. // EN: PostgreSQLDialect — predefined PostgreSQL dialect. 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) (*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) }
CRUD describes CRUD operations for a table. EN: CRUD описывает операции CRUD для таблицы.
type Condition ¶
type Condition struct {
Op ConditionOp // Оператор сравнения. / EN: Comparison operator.
Value any // Значение для сравнения. / EN: Value for comparison.
}
Condition представляет одно условие фильтра (оператор + значение). EN: Condition represents a single filter condition (operator + value).
func Between ¶
Between создаёт условие диапазона (min, max). EN: Between creates a range condition (min, max).
func Gte ¶
Gte создаёт условие "больше или равно". EN: Gte creates a "greater than or equal" condition.
func In ¶
In создаёт условие IN для списка значений. EN: In creates an IN condition for a list of values.
type ConditionOp ¶
type ConditionOp int
ConditionOp определяет оператор сравнения в условии. EN: ConditionOp defines the comparison operator in a condition.
const ( // OpEq — оператор равенства. // EN: OpEq — equality operator. OpEq ConditionOp = iota // OpGt — оператор "больше". // EN: OpGt — greater than operator. OpGt // OpLt — оператор "меньше". // EN: OpLt — less than operator. OpLt // OpGte — оператор "больше или равно". // EN: OpGte — greater than or equal operator. OpGte // OpLte — оператор "меньше или равно". // EN: OpLte — less than or equal operator. OpLte // OpBetween — оператор BETWEEN (для диапазона). // EN: OpBetween — BETWEEN operator (for range). OpBetween // OpIn — оператор IN (для списка значений). // EN: OpIn — IN operator (for list of values). 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 FieldFilter struct {
Field string // Имя поля в структуре ROW. / EN: Field name in ROW struct.
Conditions []Condition // Условия для поля (через AND/OR). / EN: Conditions for the field (via AND/OR).
Op FilterOp // Оператор между условиями. / EN: Operator between conditions.
}
FieldFilter — фильтр по одному полю с множеством условий. EN: FieldFilter is a filter for a single field with multiple conditions.
type Filter ¶
type Filter struct {
Fields []FieldFilter // Фильтры по полям. / EN: Filters by fields.
Op FilterOp // Оператор между FieldFilter (AND/OR). / EN: Operator between FieldFilters (AND/OR).
}
Filter объединяет фильтры по полям. EN: Filter combines field filters.
func AndFilter ¶
func AndFilter(fields ...FieldFilter) Filter
AndFilter объединяет фильтры по полям условием AND. EN: AndFilter combines field filters with AND condition.
func OrFilter ¶
func OrFilter(fields ...FieldFilter) Filter
OrFilter объединяет фильтры по полям условием OR. EN: OrFilter combines field filters with OR condition.
type FilterOp ¶
type FilterOp int
FilterOp определяет оператор комбинации фильтров (AND/OR). EN: FilterOp defines the filter combination operator (AND/OR).
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
ExecContext выполняет запрос, не возвращающий строк. EN: ExecContext executes a query that does not return rows.
func (PGXAdapter) QueryContext ¶ added in v0.1.6
QueryContext выполняет запрос, возвращающий строки. EN: QueryContext executes a query that returns rows.
func (PGXAdapter) QueryRowContext ¶ added in v0.1.6
QueryRowContext выполняет запрос, возвращающий одну строку. EN: QueryRowContext executes a query that returns a single row.
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
ExecContext выполняет запрос, не возвращающий строк. EN: ExecContext executes a query that does not return rows.
func (PGXTxAdapter) QueryContext ¶ added in v0.1.6
QueryContext выполняет запрос, возвращающий строки. EN: QueryContext executes a query that returns rows.
func (PGXTxAdapter) QueryRowContext ¶ added in v0.1.6
QueryRowContext выполняет запрос, возвращающий одну строку. EN: QueryRowContext executes a query that returns a single row.
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
LastInsertId возвращает ID последней вставленной строки (не поддерживается в PostgreSQL). EN: LastInsertId returns the ID of the last inserted row (not supported in PostgreSQL).
func (*PgxResult) RowsAffected ¶ added in v0.1.6
RowsAffected возвращает количество затронутых строк. EN: RowsAffected returns the number of affected rows.
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.
func (*PgxRows) Close ¶ added in v0.1.6
Close закрывает курсор результатов. EN: Close closes the result cursor.
type Query ¶ added in v0.1.4
type Query[QROW any] struct { // contains filtered or unexported fields }
Query represents a multi-table query. QROW is a struct with nested ROW types. EN: Query представляет много-табличный запрос. QROW — структура с вложенными ROW-типами.
func NewQuery ¶ added in v0.1.2
func NewQuery[QROW any](d dialect.DialectProvider) (*Query[QROW], error)
NewQuery создаёт Query[QROW] для указанного диалекта. QROW должен быть структурой с минимум одним struct-полем. EN: NewQuery creates a Query[QROW] for the specified dialect. QROW must be a struct with at least one struct field.
func NewQueryVal ¶ added in v0.1.15
func NewQueryVal[QROW any](d dialect.DialectProvider) (Query[QROW], error)
func (*Query[QROW]) List ¶ added in v0.1.4
List выполняет много-табличный запрос и возвращает строки. EN: List executes a multi-table query and returns rows.
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 SQLNamer ¶ added in v0.1.4
type SQLNamer interface {
SQLName() string
}
SQLNamer описывает интерфейс для получения имени таблицы из структуры. Реализуйте этот интерфейс, если имя таблицы отличается от snake_case имени типа. EN: SQLNamer describes the interface for getting a table name from a struct. Implement this interface when the table name differs from the snake_case type name.
type Table ¶ added in v0.1.4
type Table[ROW any] struct { // contains filtered or unexported fields }
Table represents a database table with a typed ROW struct. EN: Table представляет таблицу БД с типизированной структурой ROW.
func NewTable ¶
func NewTable[ROW any](d dialect.DialectProvider) *Table[ROW]
NewTable создаёт указатель на Table[ROW] для указанного диалекта. EN: NewTable creates a pointer to Table[ROW] for the specified dialect.
func NewTableVal ¶ added in v0.1.9
func NewTableVal[ROW any](d dialect.DialectProvider) Table[ROW]
NewTableVal создаёт Table[ROW] для указанного диалекта. Возвращает значение (не указатель), рекомендуется использовать через указатель. EN: NewTableVal creates a Table[ROW] for the specified dialect. Returns a value (not pointer), recommended to use via pointer.
func (*Table[ROW]) Delete ¶ added in v0.1.4
Delete удаляет строку по первичному ключу. EN: Delete deletes a row by primary key.
func (*Table[ROW]) GetByPK ¶ added in v0.1.4
GetByPK находит строку по первичному ключу. EN: GetByPK finds a row by primary key.
func (*Table[ROW]) Insert ¶ added in v0.1.4
Insert вставляет новую строку и возвращает её (с заполненными автогенерируемыми полями). EN: Insert inserts a new row and returns it (with auto-generated fields populated).
func (*Table[ROW]) Internals ¶ added in v0.1.4
func (t *Table[ROW]) Internals() *tableInternals
Internals возвращает внутренние данные таблицы (для доступа к SQL и метаданным). EN: Internals returns the table internals (for access to SQL and metadata).
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.