This commit is contained in:
parent
0a177e0b46
commit
a377448de3
92
README.md
Normal file
92
README.md
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
# 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
|
Loading…
x
Reference in New Issue
Block a user