All checks were successful
Build / build (push) Successful in 1m22s
92 lines
2.1 KiB
Markdown
92 lines
2.1 KiB
Markdown
# MySQLite
|
|
|
|
A Go library that provides a convenient wrapper around SQLite with additional functionality for database management, migrations, and transactions.
|
|
|
|
## Features
|
|
|
|
- Simple and intuitive SQLite database connection management
|
|
- Thread-safe database operations with built-in locking mechanism
|
|
- Support for database migrations
|
|
- Transaction management
|
|
- Built on top of [zombiezen.com/go/sqlite](https://pkg.go.dev/zombiezen.com/go/sqlite)
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
go get gitea.seeseepuff.be/seeseemelk/mysqlite
|
|
```
|
|
|
|
## Usage
|
|
|
|
### Opening a Database Connection
|
|
|
|
```go
|
|
import "gitea.seeseepuff.be/seeseemelk/mysqlite"
|
|
|
|
// Open an in-memory database
|
|
db, err := mysqlite.OpenDb(":memory:")
|
|
if err != nil {
|
|
// Handle error
|
|
}
|
|
defer db.Close()
|
|
|
|
// Open a file-based database
|
|
db, err := mysqlite.OpenDb("path/to/database.db")
|
|
if err != nil {
|
|
// Handle error
|
|
}
|
|
defer db.Close()
|
|
```
|
|
|
|
### Executing Queries
|
|
|
|
The library provides methods for executing SQL queries and managing transactions:
|
|
|
|
```go
|
|
// Execute a simple query
|
|
err := db.Query("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)").Exec()
|
|
|
|
// Use transactions
|
|
tx, err := db.BeginTransaction()
|
|
if err != nil {
|
|
// Handle error
|
|
}
|
|
|
|
// Perform operations within transaction
|
|
// ...
|
|
|
|
// Commit or rollback
|
|
err = tx.Commit() // or tx.Rollback()
|
|
```
|
|
|
|
### Database Migrations
|
|
|
|
The library includes support for SQL-based migrations. Migrations are SQL files stored in a directory and are executed in order based on their filename prefix:
|
|
|
|
1. Create a directory for your migrations (e.g., `migrations/`)
|
|
2. Add numbered SQL migration files:
|
|
```
|
|
migrations/
|
|
├── 1_initial.sql
|
|
├── 2_add_users.sql
|
|
├── 3_add_posts.sql
|
|
```
|
|
3. Embed the migrations in your Go code:
|
|
```go
|
|
import "embed"
|
|
|
|
//go:embed migrations/*.sql
|
|
var migrations embed.FS
|
|
|
|
// Apply migrations
|
|
err := db.MigrateDb(migrations, "migrations")
|
|
if err != nil {
|
|
// Handle error
|
|
}
|
|
```
|
|
|
|
Each migration file should contain valid SQL statements. The migrations are executed in order and are tracked internally to ensure they only run once.
|
|
|
|
## Requirements
|
|
|
|
- Go 1.24 or higher |