From 85bd74b767d8105655ec7ec94866b13b862d663e Mon Sep 17 00:00:00 2001 From: Ronen Lubin Date: Wed, 24 Jan 2024 14:50:39 +0200 Subject: [PATCH 1/3] add readme file --- README.md | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 103 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4d778fb..805c65f 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,104 @@ # atlas-provider-django -Django provider for atlasgo.io + +Load [Django](https://www.djangoproject.com/) models into an [Atlas](https://atlasgo.io) project. + +### Use-cases +1. **Declarative migrations** - use a Terraform-like `atlas schema apply --env django` to apply your Django schema to the database. +2. **Automatic migration planning** - use `atlas migrate diff --env django` to automatically plan a migration from the current database version to the Django schema. + +### Installation + +Install Atlas from macOS or Linux by running: +```bash +curl -sSf https://atlasgo.sh | sh +``` + +See [atlasgo.io](https://atlasgo.io/getting-started#installation) for more installation options. + +Install the provider by running: + +```bash +pip install altas-provider-django +``` + +### Configuration + +Add the provider to your Django project's `INSTALLED_APPS` in `settings.py`: + +```python +INSTALLED_APPS = [ + ..., + 'altas_provider_django', + ... +] +``` + +In your project directory, create a new file named `atlas.hcl` with the following contents: + +```hcl +data "external_schema" "django" { + program = [ + "python", + "manage.py", + "atlas-provider-django", + "--dialect", "mysql" // mariadb | postgresql | sqlite + // if you want to only load a subset of your app models, you can specify the apps by adding + // "--apps", "app1", "app2", "app3" + ] +} + +env "django" { + src = data.external_schema.django.url + dev = "docker://mysql/8/dev" + migration { + dir = "file://migrations" + } + format { + migrate { + diff = "{{ sql . \" \" }}" + } + } +} +``` + + +### Usage + +#### Apply + +You can use the `atlas schema apply` command to plan and apply a migration of your database to your current Django schema. +This works by inspecting the target database and comparing it to the Django Apps models and creating a migration plan. +Atlas will prompt you to confirm the migration plan before applying it to the database. + +```bash +atlas schema apply --env django -u "mysql://root:password@localhost:3306/mydb" +``` +Where the `-u` flag accepts the [URL](https://atlasgo.io/concepts/url) to the +target database. + +#### Diff + +Atlas supports a [version migration](https://atlasgo.io/concepts/declarative-vs-versioned#versioned-migrations) +workflow, where each change to the database is versioned and recorded in a migration file. You can use the +`atlas migrate diff` command to automatically generate a migration file that will migrate the database +from its latest revision to the current Django schema. + +```bash +atlas migrate diff --env django +```` + +### Supported Databases + +The provider supports the following databases: +* MySQL +* MariaDB +* PostgreSQL +* SQLite + +### Issues + +Please report any issues or feature requests in the [ariga/atlas](https://github.com/ariga/atlas/issues) repository. + +### License + +This project is licensed under the [Apache License 2.0](LICENSE). \ No newline at end of file From f0e587c19702e64c5de855439ab6b54363f63821 Mon Sep 17 00:00:00 2001 From: Ronen Lubin Date: Wed, 24 Jan 2024 15:16:26 +0200 Subject: [PATCH 2/3] fix typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 805c65f..2489afc 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ Load [Django](https://www.djangoproject.com/) models into an [Atlas](https://atl ### Installation -Install Atlas from macOS or Linux by running: +Install Atlas for macOS or Linux by running: ```bash curl -sSf https://atlasgo.sh | sh ``` From 49d8f4eeef9e60cdb67e2aecbb24e7229ff7eb13 Mon Sep 17 00:00:00 2001 From: Ronen Lubin <63970571+ronenlu@users.noreply.github.com> Date: Wed, 24 Jan 2024 15:24:23 +0200 Subject: [PATCH 3/3] Update README.md Co-authored-by: Jannik Clausen <12862103+masseelch@users.noreply.github.com> --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2489afc..fab2399 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ target database. #### Diff -Atlas supports a [version migration](https://atlasgo.io/concepts/declarative-vs-versioned#versioned-migrations) +Atlas supports a [versioned migrations](https://atlasgo.io/concepts/declarative-vs-versioned#versioned-migrations) workflow, where each change to the database is versioned and recorded in a migration file. You can use the `atlas migrate diff` command to automatically generate a migration file that will migrate the database from its latest revision to the current Django schema.