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