Skip to content

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

License

Notifications You must be signed in to change notification settings

SuessLabs/LiteMigrator

SQLite Lite Migrator for cross-platform .NET

LiteMigrator is a tiny cross-platform SQLite migration framework for .NET applications. This library was built for use with .NET MAUI 🐒, Avalonia, and Uno projects. So it needs to be quick, simple, and reliable when managing databases.

LiteMigrator 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, SQLiteMigrator.

LiteMigrator Docs

Breaking Change from 0.6.x to now:

Namespace changed from Xeno.LiteMigrator to LiteMigrator

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

Supported Platforms

Check out the sample project's source code LiteMigrator.Sample

Platform Status
Windows Yes
Linux Yes
Android Yes
iOS Yes

Contribute today and get your platform supported 👍

How to use it

Get LiteMigrator on NuGet today!

Getting Started

Detailed instructions can be found on the Using LiteMigrator wiki page.

  1. Add LiteMigrator 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, "LiteMigrator.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, "LiteMigrator.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 LiteMigrator 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

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

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages