Skip to content

SuessLabs/Lite.Migrator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

83 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Lite Migrator for SQLite

Lite.Migrator is a tiny cross-platform SQLite migration framework for .NET applications. This library was built for speed and flexibility so you can quickly stand-up and reliably deliver scalable database solutions.

Use it with your container app or mobile development (.NET MAUI ๐Ÿ’, Avalonia, Uno, etc.) projects.

Lite.Migrator takes a "migrate-up" approach. In most app deployments, we usually move forward and rarely downgrade (consider app stores). This helps keep the library small and nimble. Previously known as, SQLite.Migrator.

Lite.Migrator Docs

Brought to you with nerd-love by Suess Labs, sponsored by Xeno Innovations.

Supported Platforms

Check out the sample project's source code Lite.Migrator.Sample

Platform Status
Windows Yes
Linux Yes
Android Yes
iOS Yes

Contribute today and get your platform supported ๐Ÿ‘

How to use it

Get Lite.Migrator on NuGet today!

Getting Started

Detailed instructions can be found on the Using Lite.Migrator wiki page.

  1. Add Lite.Migrator project to your solution
  2. Create a folder in your solution to hold the scripts
  3. Add SQL files as Embedded Resources
    • You must use the naming convention, "YYYYMMDDhhmm-FileName.sql"
  4. Wire-up the controller

Use Case - .NET MAUI Basic Example

  // 1. Add a few `.sql` files as Embedded Resources to project
  //    in the namespace `MyProject.Namespace.Scripts`
  // 2. Execute the migrates as follows
  //    This will create the DB in your MAUI app's AppData directory.
  var dbPath = Path.Combine(FileSystem.AppDataDirectory, "Lite.Migrator.db3");
  var scriptNamespace = "MyProject.Namespace.Scripts";

  using var migrator = new Migrator(dbPath, scriptNamespace);

  // Install migration scripts
  bool isSuccessful = await migrator.MigrateUpAsync();

Use Case - Migration Management

  var dbPath = Path.Combine(FileSystem.AppDataDirectory, "Lite.Migrator.db3");
  var scriptNamespace = "MyProject.Namespace.Scripts";

  using var migrator = new Migrator(dbPath, scriptNamespace);

  // List of all embedded script files
  var embeddedMigrations = migrator.Migrations.GetSortedMigrations();

  // List of scripts installed
  var installed = await migrator.GetInstalledMigrationsAsync();

  // List of scripts waiting to be installed
  var notInstalled = await migrator.GetMissingMigrationsAsync();

  // Install migration scripts
  bool isSuccessful = await migrator.MigrateUpAsync();

Use Case 2 - Manually Destruct and Close Connection

public async Task InstallMigrationsAsync()
{
  // Your EXE/DLL with the scripts
  var dbPath = @"C:\TEMP\MyDatabase.db3";
  var migsNamespace = "MyProjNamespace.Scripts";

  var migrator = new Migrator(dbPath, migsNamespace);
  bool = success = await migrator.MigrateUpAsync();

  // Required after v0.6
  migrator.Dispose();
}

How to Contribute

Give it a test drive and support making Lite.Migrator better :)

  1. Fork on GitHub
  2. Create a branch
  3. Code (and add tests)
  4. Create a Pull Request (PR) on GitHub
    1. Target the develop branch and we'll get it merged up to master
    2. Target the master branch for hotfixes
  5. Get the PR merged
  6. Welcome to our contributors' list!

This project could use your assistance to crush any limitations.

Please visit the Known Limitations wiki page

History

v0.9.0

  • Tidy-up namespace formatting
  • Update URLs
  • MigrationFactory Stores the Supplied Assembly
  • Rename main class to Migration
  • Default Assembly in CTR to use Calling Assembly
  • Updated readme and changelog with the latest notes

v0.6.x

  • Update Parser to Search Specific Namespace
  • Disposable
  • Namespace changed from Xeno.LiteMigrator to LiteMigrator

About

SQLite Lite Migration Tool for .NET MAUI, Avalonia, Uno, and cross-platform apps. Created by Suess Labs and Xeno Innovations.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages