Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/i9or/migralite
:card_file_box: Simple forward-only SQLite migration tool for Bun
https://github.com/i9or/migralite
bun bunjs migration-tool migrations sqlite sqlite-database sqlite3
Last synced: 23 days ago
JSON representation
:card_file_box: Simple forward-only SQLite migration tool for Bun
- Host: GitHub
- URL: https://github.com/i9or/migralite
- Owner: i9or
- License: agpl-3.0
- Created: 2024-08-09T08:13:45.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2024-09-05T18:30:02.000Z (2 months ago)
- Last Synced: 2024-10-01T03:41:47.722Z (about 1 month ago)
- Topics: bun, bunjs, migration-tool, migrations, sqlite, sqlite-database, sqlite3
- Language: TypeScript
- Homepage:
- Size: 254 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Roadmap: ROADMAP.md
Awesome Lists containing this project
README
# Migralite
Migralite is lightweight forward-only SQLite migration tool for Bun.
Key features:
- Simple \*.sql files as migration scripts
- Forward-only [^1]
- Runs on Bun
- CLI with sensible defaults, so there's no need to implement migration script
- Migration generator
- Version tracking — keeps track of applied migrations to prevent duplicate runs
- Migrations are wrapped in transactions by default[^1]: https://nickcraver.com/blog/2016/05/03/stack-overflow-how-we-do-deployment-2016-edition/#database-migrations
## Usage
## Installation
Add CLI tool to the Bun based project:
```bash
bun add -d migralite
```And then used via `package.json` scripts:
```json
{
"scripts": {
"db:migrate": "migralite --database ./path/to/db.sqlite"
}
}
```The tool could be used with `bunx` without adding it to the project:
```bash
bunx migralite --help
```## Available commands
### Help
`--help` or `-h` — shows help in the terminal.
Example:
```bash
bunx migralite --help
```### Version
`--version` or `-v` — shows current version of the CLI tool.
Example:
```bash
bunx migralite --version
```### Database path
`--database` or `-d` — path to the SQLite database file.
Example:
```bash
bunx migralite -d ./db/main.sqlite
```### Migrations path
`--migrations` or `-m` — path to the folder with SQL migration scripts, by default it's `./migrations` folder in the
root of the project.Example:
```bash
bunx migralite -d ./db/main.sqlite -m ./db/migrations
```### Migration file generation
`--generate` or `-g` — migration file generation mode. It accepts short summary of what migration script is doing to
generate migration name. The summary is added as a comment to the migration script.Example:
```bash
bunx migralite -g "Create users table"
```This will create a migration file in `./migrations` folder called `./migrations/20240815123456__create-users-table.sql`.
Only this filename format is accepted by the migration tool. Anything else will result in error and migrations won't
run.## Development
To install dependencies:
```bash
bun install
```To run:
```bash
bun run index.ts
```## Contributions
Please raise an issue first and let's discuss.
This project is pretty much done, but I am still open for some sensible contributions.## Attributions
Logo by https://www.behance.net/garnenka
## License
Code is distributed under the GNU AFFERO GENERAL PUBLIC LICENSE Version 3 only.