API Reference
Complete reference for all go-lightning functions and types.
Registration
RegisterModel
Registers a model with the default naming strategy.
func RegisterModel[T any](driver Driver)Parameters:
driver: Database driver (lit.PostgreSQLorlit.MySQL)
Example:
lit.RegisterModel[User](lit.PostgreSQL)RegisterModelWithNaming
Registers a model with a custom naming strategy.
func RegisterModelWithNaming[T any](driver Driver, namingStrategy DbNamingStrategy)Parameters:
driver: Database drivernamingStrategy: Implementation ofDbNamingStrategy
Example:
lit.RegisterModelWithNaming[User](lit.PostgreSQL, MyNamingStrategy{})Query Functions
Select
Executes a query and returns all matching rows.
func Select[T any](ex Executor, query string, args ...any) ([]*T, error)Parameters:
ex: Database connection or transactionquery: SQL SELECT queryargs: Query parameters
Returns:
[]*T: Slice of pointers to resultserror: Any error that occurred
Example:
users, err := lit.Select[User](db, "SELECT id, name, email FROM users WHERE active = $1", true)SelectSingle
Executes a query and returns a single row or nil.
func SelectSingle[T any](ex Executor, query string, args ...any) (*T, error)Parameters:
ex: Database connection or transactionquery: SQL SELECT queryargs: Query parameters
Returns:
*T: Pointer to result, or nil if not founderror: Any error that occurred
Example:
user, err := lit.SelectSingle[User](db, "SELECT id, name, email FROM users WHERE id = $1", 123)SelectMultipleNative
Executes a query with manual row scanning.
func SelectMultipleNative[T any](
ex Executor,
mapLine func(*interface{ Scan(...any) error }, *T) error,
query string,
args ...any,
) ([]*T, error)Parameters:
ex: Database connection or transactionmapLine: Function to scan each rowquery: SQL SELECT queryargs: Query parameters
Example:
results, err := lit.SelectMultipleNative[Result](db,
func(scanner *interface{ Scan(...any) error }, r *Result) error {
return (*scanner).Scan(&r.Name, &r.Value)
},
"SELECT name, value FROM items")Mutation Functions
Insert
Inserts a record and returns the generated ID.
func Insert[T any](ex Executor, t *T) (int, error)Parameters:
ex: Database connection or transactiont: Pointer to the struct to insert
Returns:
int: Generated IDerror: Any error that occurred
Example:
id, err := lit.Insert(db, &user)InsertUuid
Inserts a record with an auto-generated UUID.
func InsertUuid[T any](ex Executor, t *T) (string, error)Parameters:
ex: Database connection or transactiont: Pointer to the struct to insert (Id field will be set)
Returns:
string: Generated UUIDerror: Any error that occurred
Example:
uuid, err := lit.InsertUuid(db, &session)InsertExistingUuid
Inserts a record with a pre-existing UUID.
func InsertExistingUuid[T any](ex Executor, t *T) errorParameters:
ex: Database connection or transactiont: Pointer to the struct to insert (Id must be set)
Returns:
error: Any error that occurred
Example:
err := lit.InsertExistingUuid(db, &session)InsertNative
Executes a manual INSERT query.
func InsertNative(ex Executor, query string, args ...any) (int, error)Parameters:
ex: Database connection or transactionquery: SQL INSERT queryargs: Query parameters
Returns:
int: Last inserted IDerror: Any error that occurred
Update
Updates a record with a WHERE clause.
func Update[T any](ex Executor, t *T, where string, args ...any) errorParameters:
ex: Database connection or transactiont: Pointer to the struct with updated valueswhere: WHERE clause (required, cannot be empty)args: WHERE clause parameters
Returns:
error: Any error that occurred
Example:
err := lit.Update(db, &user, "id = $1", user.Id)UpdateNative
Executes a manual UPDATE query.
func UpdateNative(ex Executor, query string, args ...any) errorParameters:
ex: Database connection or transactionquery: SQL UPDATE queryargs: Query parameters
Delete
Executes a DELETE query.
func Delete(ex Executor, query string, args ...any) errorParameters:
ex: Database connection or transactionquery: SQL DELETE queryargs: Query parameters
Example:
err := lit.Delete(db, "DELETE FROM users WHERE id = $1", 123)Helper Functions
JoinForIn
Creates a comma-separated string of integers for IN clauses.
func JoinForIn(ids []int) stringExample:
ids := []int{1, 2, 3}
query := "SELECT * FROM users WHERE id IN (" + lit.JoinForIn(ids) + ")"
// Result: SELECT * FROM users WHERE id IN (1,2,3)JoinStringForIn
Creates parameterized placeholders for IN clauses.
func JoinStringForIn[T any](offset int, params []string) stringParameters:
offset: Starting parameter number (for PostgreSQL)params: Slice of values (used to determine count)
Example:
emails := []string{"a@test.com", "b@test.com"}
placeholders := lit.JoinStringForIn[User](0, emails)
// PostgreSQL: $1,$2
// MySQL: ?,?JoinStringForInWithDriver
Creates parameterized placeholders for a specific driver.
func JoinStringForInWithDriver(driver Driver, offset int, count int) stringExample:
placeholders := lit.JoinStringForInWithDriver(lit.PostgreSQL, 2, 3)
// Result: $3,$4,$5Types
Driver
Database driver enum.
type Driver int
const (
PostgreSQL Driver = iota
MySQL
)Executor
Interface for database operations (implemented by *sql.DB and *sql.Tx).
type Executor interface {
Exec(query string, args ...any) (sql.Result, error)
Query(query string, args ...any) (*sql.Rows, error)
QueryRow(query string, args ...any) *sql.Row
}DbNamingStrategy
Interface for custom naming conventions.
type DbNamingStrategy interface {
GetTableNameFromStructName(string) string
GetColumnNameFromStructName(string) string
}DefaultDbNamingStrategy
Built-in naming strategy (CamelCase → snake_case).
type DefaultDbNamingStrategy struct{}FieldMap
Cached metadata for a registered model.
type FieldMap struct {
ColumnsMap map[string]int // Column name → field index
ColumnKeys []string // Ordered column names
HasIntId bool // Whether id is an integer
InsertQuery string // Pre-built INSERT query
UpdateQuery string // Pre-built UPDATE query (without WHERE)
InsertColumns []string // Columns used in INSERT
Driver Driver // Database driver
}