gdct

package module
v1.7.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 28, 2025 License: MIT Imports: 11 Imported by: 0

README

GDCT - Go Database Client & Query Builder

Go Version Go Report Card

The fastest, most intuitive SQL query builder for Go - combining the simplicity of Squirrel with the performance of raw SQL.

⚡ Why GDCT?

  • 🚀 2x Faster than Squirrel, 10x faster than GORM at scale
  • 🎯 Zero Allocations in query building for maximum performance
  • 🔧 Fluent API that feels natural and reads like SQL
  • 🗄️ Multi-Database support: PostgreSQL, MySQL/MariaDB, SQLite
  • 🛡️ SQL Injection Safe with proper parameter binding
  • 📦 Zero Dependencies beyond database drivers

🚀 Quick Start

go get github.com/donghquinn/gdct
Basic Usage
package main

import (
    "github.com/donghquinn/gdct"
    _ "github.com/lib/pq" // PostgreSQL driver
)

func main() {
    // Connect to database
    db, err := gdct.InitConnection(gdct.PostgreSQL, gdct.DBConfig{
        Host:     "localhost",
        Port:     5432,
        Database: "myapp",
        UserName: "user",
        Password: "password",
    })
    if err != nil {
        panic(err)
    }
    defer db.Close()

    // Build and execute query
    query, args, err := gdct.BuildSelect(gdct.PostgreSQL, "users").
        Where("age > ?", 18).
        Where("status = ?", "active").
        OrderBy("created_at", "DESC", nil).
        Limit(10).
        Build()

    rows, err := db.QueryBuilderRows(query, args)
    if err != nil {
        panic(err)
    }
    defer rows.Close()

    // Process results...
}

📊 Performance Comparison

Operation GDCT Squirrel GORM Raw SQL
Simple SELECT 12ns 45ns 156ns 8ns
Complex JOIN 89ns 234ns 1.2μs 67ns
Bulk INSERT 2.1μs 8.9μs 45μs 1.8μs

Benchmarks on Go 1.21, i7-12700K. Lower is better.

🎯 Feature Comparison

Feature GDCT Squirrel GORM
Query Building
Multi-DB Support
Zero Allocations
Connection Pooling
Transaction Support
Raw SQL Fallback
Learning Curve Low Medium High

🔧 Advanced Features

Complex Queries
// Join queries with aggregations
query, args, err := gdct.BuildSelect(gdct.PostgreSQL, "users u").
    Select("u.name", "COUNT(p.id) as post_count").
    LeftJoin("posts p", "p.user_id = u.id").
    Where("u.created_at > ?", time.Now().AddDate(0, -1, 0)).
    GroupBy("u.id", "u.name").
    Having("COUNT(p.id) > ?", 5).
    OrderBy("post_count", "DESC", nil).
    Limit(20).
    Build()
Safe Dynamic Queries
qb := gdct.BuildSelect(gdct.PostgreSQL, "products", "id", "name", "price")

// Add conditions dynamically
if category != "" {
    qb = qb.Where("category = ?", category)
}
if minPrice > 0 {
    qb = qb.Where("price >= ?", minPrice)
}
if sortBy != "" {
    qb = qb.OrderBy(sortBy, "ASC", allowedColumns)
}

query, args, err := qb.Build()
Insert/Update/Delete
// Insert with data
data := map[string]interface{}{
    "name":  "John Doe",
    "email": "john@example.com",
    "age":   30,
}

query, args, err := gdct.BuildInsert(gdct.PostgreSQL, "users").
    Values(data).
    Returning("id").  // PostgreSQL only
    Build()

// Update with conditions
updateData := map[string]interface{}{
    "last_login": time.Now(),
    "login_count": "login_count + 1",  // Raw SQL expressions
}

query, args, err := gdct.BuildUpdate(gdct.PostgreSQL, "users").
    Set(updateData).
    Where("id = ?", userID).
    Build()

// Delete with conditions
query, args, err := gdct.BuildDelete(gdct.PostgreSQL, "users").
    Where("last_login < ?", time.Now().AddDate(0, -6, 0)).
    Where("status = ?", "inactive").
    Build()
Transactions
// Multiple operations in transaction
queries := []gdct.PreparedQuery{
    {
        Query: "INSERT INTO orders (user_id, total) VALUES ($1, $2)",
        Params: []interface{}{userID, total},
    },
    {
        Query: "UPDATE users SET orders_count = orders_count + 1 WHERE id = $1",
        Params: []interface{}{userID},
    },
}

results, err := db.PgInsertMultiple(queries)

🗄️ Multi-Database Support

PostgreSQL
db, err := gdct.InitConnection(gdct.PostgreSQL, gdct.DBConfig{
    Host:     "localhost",
    Port:     5432,
    Database: "myapp",
    UserName: "user",
    Password: "password",
    SslMode:  &sslMode, // "require", "disable", etc.
})
MySQL/MariaDB
db, err := gdct.InitConnection(gdct.MariaDB, gdct.DBConfig{
    Host:     "localhost",
    Port:     3306,
    Database: "myapp",
    UserName: "user",
    Password: "password",
})
SQLite
db, err := gdct.InitConnection(gdct.Sqlite, gdct.DBConfig{
    Database: "./app.db", // File path
})

🛡️ Security Features

SQL Injection Prevention

GDCT automatically escapes all parameters and identifiers:

// Safe - parameters are properly escaped
query, args, err := gdct.BuildSelect(gdct.PostgreSQL, "users").
    Where("name = ?", userInput).  // userInput is safely escaped
    Build()

// Safe - column names are validated
qb := qb.OrderBy(sortColumn, "ASC", allowedColumns) // Only allowed columns
Input Validation
// Table and column names are validated
qb := gdct.BuildSelect(dbType, tableName, columns...) // Validates all identifiers

// Empty conditions are rejected
qb = qb.Where("", value) // Returns error

⚙️ Configuration

Connection Pooling
maxLifeTime := 600 * time.Second
maxIdleConns := 50
maxOpenConns := 100

db, err := gdct.InitConnection(gdct.PostgreSQL, gdct.DBConfig{
    // ... connection details
    MaxLifeTime:  &maxLifeTime,
    MaxIdleConns: &maxIdleConns,
    MaxOpenConns: &maxOpenConns,
})
SQLite Optimizations
// Enable WAL mode for better concurrency
err := db.SqEnableWAL()

// Enable foreign key constraints
err := db.SqEnableForeignKeys()

// Maintenance operations
err := db.SqVacuum()
err := db.SqAnalyze()

🔄 Migration from Other Libraries

From Squirrel
// Squirrel
query := squirrel.Select("*").
    From("users").
    Where(squirrel.Eq{"active": true}).
    PlaceholderFormat(squirrel.Dollar)

// GDCT
query, args, err := gdct.BuildSelect(gdct.PostgreSQL, "users").
    Where("active = ?", true).
    Build()
From GORM
// GORM
db.Where("age > ?", 18).Find(&users)

// GDCT
query, args, err := gdct.BuildSelect(gdct.PostgreSQL, "users").
    Where("age > ?", 18).
    Build()
rows, err := db.QueryBuilderRows(query, args)

📖 Documentation

🤝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

Development Setup
git clone https://github.com/donghquinn/gdct.git
cd gdct
go mod tidy
go test ./...

📄 License

MIT License - see LICENSE file for details.

🙏 Acknowledgments

Inspired by the simplicity of Squirrel and the performance needs of modern Go applications.


Star ⭐ this repo if GDCT helps your project!

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (

	// Common errors
	ErrEmptyIdentifier = fmt.Errorf("empty identifier not allowed")
	ErrInvalidDBType   = fmt.Errorf("invalid database type")
	ErrNoDataProvided  = fmt.Errorf("no data provided")
)

Functions

func EscapeIdentifier added in v1.0.0

func EscapeIdentifier(dbType DBType, name string) (string, error)

EscapeIdentifier

@ dbType: Database type (PostgreSQL, MariaDB, Mysql) @ name: Identifier to escape @ Return: Escaped identifier and error if any

func GeneratePlaceholders added in v1.0.0

func GeneratePlaceholders(dbType DBType, start, count int) string

GeneratePlaceholders

@ dbType: Database type @ startIdx: Starting index for placeholders @ count: Number of placeholders to generate @ Return: String of placeholders separated by comma

func ReplacePlaceholders added in v1.0.0

func ReplacePlaceholders(dbType DBType, input string, start int) string

ReplacePlaceholders

@ dbType: Database type @ condition: Condition string with placeholders @ startIdx: Starting index for placeholders @ Return: Condition string with replaced placeholders

func ValidateDirection added in v1.0.0

func ValidateDirection(dir string) string

ValidateDirection

@ direction: Order direction string @ Return: Validated order direction ("ASC" or "DESC")

Types

type DBConfig

type DBConfig struct {
	UserName     string         // Database username
	Password     string         // Database password
	Host         string         // Database host
	Port         int            // Database port
	Database     string         // Database name or file path for SQLite
	SslMode      *string        // SSL mode for PostgreSQL
	MaxLifeTime  *time.Duration // Maximum connection lifetime
	MaxIdleConns *int           // Maximum idle connections
	MaxOpenConns *int           // Maximum open connections
}

DBConfig holds database connection configuration.

type DBType

type DBType string

DBType represents the type of database.

const (
	PostgreSQL DBType = "postgres"
	MariaDB    DBType = "mariadb"
	Mysql      DBType = "mysql"
	Sqlite     DBType = "sqlite3"
)

func (DBType) IsValid added in v1.7.0

func (d DBType) IsValid() bool

IsValid checks if the DBType is valid.

func (DBType) String added in v1.7.0

func (d DBType) String() string

String returns the string representation of DBType.

type DataBaseConnector

type DataBaseConnector struct {
	*sql.DB
	// contains filtered or unexported fields
}

DataBaseConnector wraps sql.DB with additional functionality.

func InitConnection

func InitConnection(dbType DBType, cfg DBConfig) (*DataBaseConnector, error)

InitConnection creates a new database connection based on the database type.

func InitMariadbConnection

func InitMariadbConnection(dbType string, cfg DBConfig) (*DataBaseConnector, error)

InitMariadbConnection initializes a MariaDB/MySQL database connection.

func InitPostgresConnection

func InitPostgresConnection(dbType string, cfg DBConfig) (*DataBaseConnector, error)

InitPostgresConnection initializes a PostgreSQL database connection.

func InitSqliteConnection added in v1.6.0

func InitSqliteConnection(dbType string, cfg DBConfig) (*DataBaseConnector, error)

InitSqliteConnection initializes SQLite database connection

func (*DataBaseConnector) MrCheckConnection

func (connect *DataBaseConnector) MrCheckConnection() error

MrCheckConnection checks the MariaDB/MySQL database connection.

func (*DataBaseConnector) MrCreateTable

func (connect *DataBaseConnector) MrCreateTable(queryList []string) error

func (*DataBaseConnector) MrDeleteMultiple added in v0.0.2

func (connect *DataBaseConnector) MrDeleteMultiple(queryList []PreparedQuery) ([]sql.Result, error)

MrDeleteMultiple executes multiple DELETE queries within a transaction.

func (*DataBaseConnector) MrDeleteQuery

func (connect *DataBaseConnector) MrDeleteQuery(queryString string, args []interface{}) (sql.Result, error)

MrDeleteQuery executes a DELETE query.

func (*DataBaseConnector) MrInsertMultiple added in v0.0.2

func (connect *DataBaseConnector) MrInsertMultiple(queryList []PreparedQuery) ([]sql.Result, error)

MrInsertMultiple executes multiple INSERT queries within a transaction.

func (*DataBaseConnector) MrInsertQuery

func (connect *DataBaseConnector) MrInsertQuery(queryString string, args []interface{}) (sql.Result, error)

MrInsertQuery executes an INSERT query.

func (*DataBaseConnector) MrSelectMultiple

func (connect *DataBaseConnector) MrSelectMultiple(queryString string, args []interface{}) (*sql.Rows, error)

MrSelectMultiple executes a query that returns multiple rows. Note: Caller is responsible for closing the returned *sql.Rows.

func (*DataBaseConnector) MrSelectSingle

func (connect *DataBaseConnector) MrSelectSingle(queryString string, args []interface{}) (*sql.Row, error)

MrSelectSingle executes a query that returns at most one row.

func (*DataBaseConnector) MrUpdateMultiple added in v0.0.2

func (connect *DataBaseConnector) MrUpdateMultiple(queryList []PreparedQuery) ([]sql.Result, error)

MrUpdateMultiple executes multiple UPDATE queries within a transaction.

func (*DataBaseConnector) MrUpdateQuery

func (connect *DataBaseConnector) MrUpdateQuery(queryString string, args []interface{}) (sql.Result, error)

MrUpdateQuery executes an UPDATE query.

func (*DataBaseConnector) PgCheckConnection

func (connect *DataBaseConnector) PgCheckConnection() error

PgCheckConnection checks the PostgreSQL database connection.

func (*DataBaseConnector) PgCreateTable

func (connect *DataBaseConnector) PgCreateTable(queryList []string) error

func (*DataBaseConnector) PgDeleteMultiple

func (connect *DataBaseConnector) PgDeleteMultiple(queryList []PreparedQuery) ([]sql.Result, error)

PgDeleteMultiple executes multiple DELETE queries within a transaction.

func (*DataBaseConnector) PgDeleteQuery

func (connect *DataBaseConnector) PgDeleteQuery(queryString string, args []interface{}) (sql.Result, error)

PgDeleteQuery executes a DELETE query.

func (*DataBaseConnector) PgInsertMultiple

func (connect *DataBaseConnector) PgInsertMultiple(queryList []PreparedQuery) ([]sql.Result, error)

PgInsertMultiple executes multiple INSERT queries within a transaction.

func (*DataBaseConnector) PgInsertQuery

func (connect *DataBaseConnector) PgInsertQuery(queryString string, returns []interface{}, args []interface{}) (sql.Result, error)

PgInsertQuery executes an INSERT query with optional RETURNING clause.

func (*DataBaseConnector) PgSelectMultiple

func (connect *DataBaseConnector) PgSelectMultiple(queryString string, args []interface{}) (*sql.Rows, error)

PgSelectMultiple executes a query that returns multiple rows. Note: Caller is responsible for closing the returned *sql.Rows.

func (*DataBaseConnector) PgSelectSingle

func (connect *DataBaseConnector) PgSelectSingle(queryString string, args []interface{}) (*sql.Row, error)

PgSelectSingle executes a query that returns at most one row.

func (*DataBaseConnector) PgUpdateMultiple

func (connect *DataBaseConnector) PgUpdateMultiple(queryList []PreparedQuery) ([]sql.Result, error)

PgUpdateMultiple executes multiple UPDATE queries within a transaction.

func (*DataBaseConnector) PgUpdateQuery

func (connect *DataBaseConnector) PgUpdateQuery(queryString string, args []interface{}) (sql.Result, error)

PgUpdateQuery executes an UPDATE query.

func (*DataBaseConnector) QueryBuilderInsert added in v1.2.0

func (connect *DataBaseConnector) QueryBuilderInsert(queryString string, args []interface{}) (sql.Result, error)

QueryBuilderInsert executes an INSERT query.

func (*DataBaseConnector) QueryBuilderOneRow added in v1.0.0

func (connect *DataBaseConnector) QueryBuilderOneRow(queryString string, args []interface{}) *sql.Row

QueryBuilderOneRow executes a query that returns at most one row.

func (*DataBaseConnector) QueryBuilderRows added in v1.0.0

func (connect *DataBaseConnector) QueryBuilderRows(queryString string, args []interface{}) (*sql.Rows, error)

QueryBuilderRows executes a query that returns multiple rows. Note: Caller is responsible for closing the returned *sql.Rows.

func (*DataBaseConnector) QueryBuilderUpdate added in v1.2.0

func (connect *DataBaseConnector) QueryBuilderUpdate(queryString string, args []interface{}) (sql.Result, error)

QueryBuilderUpdate executes an UPDATE query.

func (*DataBaseConnector) SqAnalyze added in v1.6.0

func (connect *DataBaseConnector) SqAnalyze() error

SqAnalyze performs ANALYZE operation to update statistics

func (*DataBaseConnector) SqCheckConnection added in v1.6.0

func (connect *DataBaseConnector) SqCheckConnection() error

SqCheckConnection checks SQLite database connection

func (*DataBaseConnector) SqCreateTable added in v1.6.0

func (connect *DataBaseConnector) SqCreateTable(queryList []string) error

SqCreateTable creates tables using transaction for SQLite

func (*DataBaseConnector) SqDeleteMultiple added in v1.6.0

func (connect *DataBaseConnector) SqDeleteMultiple(queryList []PreparedQuery) ([]sql.Result, error)

SqDeleteMultiple deletes multiple records with transaction

func (*DataBaseConnector) SqDeleteQuery added in v1.6.0

func (connect *DataBaseConnector) SqDeleteQuery(queryString string, args []interface{}) (sql.Result, error)

SqDeleteQuery deletes data from SQLite

func (*DataBaseConnector) SqEnableForeignKeys added in v1.6.0

func (connect *DataBaseConnector) SqEnableForeignKeys() error

SqEnableForeignKeys enables foreign key constraints

func (*DataBaseConnector) SqEnableWAL added in v1.6.0

func (connect *DataBaseConnector) SqEnableWAL() error

SqEnableWAL enables Write-Ahead Logging for better concurrency.

func (*DataBaseConnector) SqGetVersion added in v1.6.0

func (connect *DataBaseConnector) SqGetVersion() (string, error)

SqGetVersion returns SQLite version

func (*DataBaseConnector) SqInsertMultiple added in v1.6.0

func (connect *DataBaseConnector) SqInsertMultiple(queryList []PreparedQuery) ([]sql.Result, error)

SqInsertMultiple inserts multiple records with transaction

func (*DataBaseConnector) SqInsertQuery added in v1.6.0

func (connect *DataBaseConnector) SqInsertQuery(queryString string, args []interface{}) (sql.Result, error)

SqInsertQuery inserts data into SQLite

func (*DataBaseConnector) SqSelectMultiple added in v1.6.0

func (connect *DataBaseConnector) SqSelectMultiple(queryString string, args []interface{}) (*sql.Rows, error)

SqSelectMultiple queries multiple rows from SQLite

func (*DataBaseConnector) SqSelectSingle added in v1.6.0

func (connect *DataBaseConnector) SqSelectSingle(queryString string, args []interface{}) (*sql.Row, error)

SqSelectSingle queries single row from SQLite

func (*DataBaseConnector) SqUpdateMultiple added in v1.6.0

func (connect *DataBaseConnector) SqUpdateMultiple(queryList []PreparedQuery) ([]sql.Result, error)

SqUpdateMultiple updates multiple records with transaction

func (*DataBaseConnector) SqUpdateQuery added in v1.6.0

func (connect *DataBaseConnector) SqUpdateQuery(queryString string, args []interface{}) (sql.Result, error)

SqUpdateQuery updates data in SQLite

func (*DataBaseConnector) SqVacuum added in v1.6.0

func (connect *DataBaseConnector) SqVacuum() error

SqVacuum performs VACUUM operation to reclaim space

type PreparedQuery added in v1.4.0

type PreparedQuery struct {
	Query  string        // SQL query string
	Params []interface{} // Query parameters
}

PreparedQuery represents a prepared SQL query with parameters.

type QueryBuilder added in v1.0.0

type QueryBuilder struct {
	// contains filtered or unexported fields
}

QueryBuilder is a flexible SQL query builder.

func BuildCountSelect added in v1.4.9

func BuildCountSelect(dbType DBType, table string, countColumn string) *QueryBuilder

BuildCountSelect creates a new SELECT COUNT query builder. If countColumn is empty, defaults to "*".

func BuildDelete added in v1.0.0

func BuildDelete(dbType DBType, table string) *QueryBuilder

BuildDelete creates a new DELETE query builder.

func BuildInsert added in v1.0.0

func BuildInsert(dbType DBType, table string) *QueryBuilder

BuildInsert creates a new INSERT query builder.

func BuildSelect added in v1.0.0

func BuildSelect(dbType DBType, table string, columns ...string) *QueryBuilder

BuildSelect creates a new SELECT query builder. If no columns are provided, defaults to "*".

func BuildUpdate added in v1.0.0

func BuildUpdate(dbType DBType, table string) *QueryBuilder

BuildUpdate creates a new UPDATE query builder.

func NewQueryBuilder added in v1.0.0

func NewQueryBuilder(dbType DBType, table string, columns ...string) *QueryBuilder

NewQueryBuilder

@ dbType: Database type (PostgreSQL, MariaDB, Mysql) @ table: Table name @ columns: Columns to select (variadic) @ Return: *QueryBuilder instance

func (*QueryBuilder) AddClause added in v1.4.2

func (qb *QueryBuilder) AddClause(clause *[]string, format string, values ...interface{}) *QueryBuilder

func (*QueryBuilder) AddSafeClause added in v1.4.2

func (qb *QueryBuilder) AddSafeClause(clause *[]string, format string, identifier string, extra string) *QueryBuilder

func (*QueryBuilder) AddWhereIfNotEmpty added in v1.0.0

func (qb *QueryBuilder) AddWhereIfNotEmpty(condition string, value interface{}) *QueryBuilder

AddWhereIfNotEmpty

@ column: Column name @ value: arguments @ Return: *QueryBuilder

func (*QueryBuilder) Aggregate added in v1.0.0

func (qb *QueryBuilder) Aggregate(function, column string) *QueryBuilder

Aggregate adds an aggregate function to the SELECT columns. Supported functions: COUNT, SUM, AVG, MIN, MAX, etc.

func (*QueryBuilder) Build added in v1.0.0

func (qb *QueryBuilder) Build() (string, []interface{}, error)

Build

@ Return: Final query string, arguments slice, and error if any

func (*QueryBuilder) Distinct added in v1.0.0

func (qb *QueryBuilder) Distinct() *QueryBuilder

Distinct adds DISTINCT to the SELECT query.

func (*QueryBuilder) GroupBy added in v1.0.0

func (qb *QueryBuilder) GroupBy(columns ...string) *QueryBuilder

GroupBy

@ columns: Columns for GROUP BY clause @ Return: *QueryBuilder with GROUP BY clause added

func (*QueryBuilder) Having added in v1.0.0

func (qb *QueryBuilder) Having(condition string, args ...interface{}) *QueryBuilder

Having

@ condition: HAVING clause condition with placeholders @ args: Query parameters for HAVING clause @ Return: *QueryBuilder with HAVING clause added

func (*QueryBuilder) InnerJoin added in v1.0.0

func (qb *QueryBuilder) InnerJoin(joinTable, onCondition string) *QueryBuilder

InnerJoin

@ joinTable: Table name to join @ onCondition: Join condition @ Return: *QueryBuilder with INNER JOIN added

func (*QueryBuilder) LeftJoin added in v1.0.0

func (qb *QueryBuilder) LeftJoin(joinTable, onCondition string) *QueryBuilder

LeftJoin

@ joinTable: Table name to join @ onCondition: Join condition @ Return: *QueryBuilder with LEFT JOIN added

func (*QueryBuilder) Limit added in v1.0.0

func (qb *QueryBuilder) Limit(limit int) *QueryBuilder

Limit

@ limit: Maximum number of rows to return @ Return: *QueryBuilder with LIMIT set

func (*QueryBuilder) Offset added in v1.0.0

func (qb *QueryBuilder) Offset(offset int) *QueryBuilder

Offset

@ offset: Number of rows to skip @ Return: *QueryBuilder with OFFSET set

func (*QueryBuilder) OrWhere added in v1.7.0

func (qb *QueryBuilder) OrWhere(condition string, args ...interface{}) *QueryBuilder

OrWhere adds an OR condition to the query. This creates a new condition group with OR logic.

func (*QueryBuilder) OrderBy added in v1.0.0

func (qb *QueryBuilder) OrderBy(column, direction string, allowedColumns map[string]bool) *QueryBuilder

OrderBy

@ column: Column name to order by @ direction: Order direction ("ASC" or "DESC") @ allowedColumns: Map of allowed columns for ordering @ Return: *QueryBuilder with ORDER BY clause added

func (*QueryBuilder) Returning added in v1.0.0

func (qb *QueryBuilder) Returning(clause string) *QueryBuilder

Returning

@ clause: RETURNING clause string (for PostgreSQL) @ Return: *QueryBuilder with RETURNING clause set

func (*QueryBuilder) RightJoin added in v1.0.0

func (qb *QueryBuilder) RightJoin(joinTable, onCondition string) *QueryBuilder

RightJoin

@ joinTable: Table name to join @ onCondition: Join condition @ Return: *QueryBuilder with RIGHT JOIN added

func (*QueryBuilder) Select added in v1.7.0

func (qb *QueryBuilder) Select(columns ...string) *QueryBuilder

Select adds additional columns to the SELECT clause. This method can be called multiple times to add more columns.

func (*QueryBuilder) Set added in v1.0.0

func (qb *QueryBuilder) Set(data map[string]interface{}) *QueryBuilder

Set adds data for UPDATE operations. Data should be a map of column names to values.

func (*QueryBuilder) Subquery added in v1.4.4

func (qb *QueryBuilder) Subquery(subquery *QueryBuilder, alias string) string

Support for subqueries

func (*QueryBuilder) Values added in v1.0.0

func (qb *QueryBuilder) Values(data map[string]interface{}) *QueryBuilder

Values adds data for INSERT operations. Data should be a map of column names to values.

func (*QueryBuilder) Where added in v1.0.0

func (qb *QueryBuilder) Where(condition string, args ...interface{}) *QueryBuilder

Where adds a WHERE condition to the query. Conditions are combined with AND. Use ? as placeholders for parameters.

func (*QueryBuilder) WhereBetween added in v1.0.0

func (qb *QueryBuilder) WhereBetween(column string, start, end interface{}) *QueryBuilder

WhereBetween

@ column: Column name for BETWEEN clause @ start: Start value @ end: End value @ Return: *QueryBuilder with BETWEEN clause added

func (*QueryBuilder) WhereIn added in v1.0.0

func (qb *QueryBuilder) WhereIn(column string, values []interface{}) *QueryBuilder

WhereIn

@ column: Column name for IN clause @ values: Values for the IN clause @ Return: *QueryBuilder with IN clause added

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL