From 1e00f31022f0c1fd2769f5bca90f57f399298ea0 Mon Sep 17 00:00:00 2001 From: DJ Gillespie Date: Mon, 25 Nov 2019 19:54:16 -0700 Subject: [PATCH] QRTR-2 added database migrations to qrtr v1 api backend --- .gitignore | 1 + connection/connections/abstract.py | 29 ++++++++ connection/migrations/0001_initial.py | 24 +++++++ connection/migrations/__init__.py | 0 qrtr_account/migrations/0001_initial.py | 66 +++++++++++++++++++ .../migrations/0002_auto_20191126_0223.py | 20 ++++++ .../migrations/0003_auto_20191126_0227.py | 24 +++++++ .../migrations/0004_auto_20191126_0231.py | 23 +++++++ 8 files changed, 187 insertions(+) create mode 100755 connection/connections/abstract.py create mode 100644 connection/migrations/0001_initial.py create mode 100644 connection/migrations/__init__.py create mode 100644 qrtr_account/migrations/0001_initial.py create mode 100644 qrtr_account/migrations/0002_auto_20191126_0223.py create mode 100644 qrtr_account/migrations/0003_auto_20191126_0227.py create mode 100644 qrtr_account/migrations/0004_auto_20191126_0231.py diff --git a/.gitignore b/.gitignore index 7c52e91..0a2fae1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ qrtr-venv venv +__pycache__ diff --git a/connection/connections/abstract.py b/connection/connections/abstract.py new file mode 100755 index 0000000..64e6ee1 --- /dev/null +++ b/connection/connections/abstract.py @@ -0,0 +1,29 @@ +from abc import (ABCMeta, abstractmethod, ) +import datetime + + +class AbstractConnectionClient(metaclass=ABCMeta): + """ + Clients for connections in this application will be based on this class + """ + + @abstractmethod + def __init__(self, credentials): + """ + Make a connection to the network and returns a client for accessing + data. + + Arguments: + credentials {json} -- credentials needed by the client to connect + """ + self.credentials = credentials + + @abstractmethod + def get_transactions(self, start_datetime, end_datetime): + """Pulls a list of all transactions available between start and end + times. + + Arguments: + start_datetime {datetime} -- datetime representing start time + end_datetime {datetime} -- datetime representing end time + """ diff --git a/connection/migrations/0001_initial.py b/connection/migrations/0001_initial.py new file mode 100644 index 0000000..cbe99c4 --- /dev/null +++ b/connection/migrations/0001_initial.py @@ -0,0 +1,24 @@ +# Generated by Django 2.2.6 on 2019-11-26 02:09 + +from django.db import migrations, models +import jsonfield.fields + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Connection', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255)), + ('connection_path', models.CharField(max_length=255)), + ('credentials', jsonfield.fields.JSONField(default=dict)), + ], + ), + ] diff --git a/connection/migrations/__init__.py b/connection/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/qrtr_account/migrations/0001_initial.py b/qrtr_account/migrations/0001_initial.py new file mode 100644 index 0000000..d3fad1b --- /dev/null +++ b/qrtr_account/migrations/0001_initial.py @@ -0,0 +1,66 @@ +# Generated by Django 2.2.6 on 2019-11-26 02:09 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import jsonfield.fields + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('connection', '__first__'), + ] + + operations = [ + migrations.CreateModel( + name='Account', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=250)), + ('admin_users', models.ManyToManyField(related_name='admin_accounts', to=settings.AUTH_USER_MODEL)), + ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ('view_users', models.ManyToManyField(related_name='view_accounts', to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='Bank', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('nickname', models.CharField(max_length=250)), + ('balance', models.DecimalField(decimal_places=3, max_digits=100)), + ('ac_type', models.CharField(max_length=250)), + ('ac_subtype', models.CharField(max_length=250)), + ('connection', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='connection.Connection')), + ], + ), + migrations.CreateModel( + name='Institution', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255)), + ], + ), + migrations.CreateModel( + name='Transaction', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('datetime', models.DateTimeField()), + ('details', jsonfield.fields.JSONField(default=dict)), + ('Bank', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='transactions', to='qrtr_account.Bank')), + ], + ), + migrations.AddField( + model_name='bank', + name='institution', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='banks', to='qrtr_account.Institution'), + ), + migrations.AddField( + model_name='bank', + name='qrtr_account', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='qrtr_account.Account'), + ), + ] diff --git a/qrtr_account/migrations/0002_auto_20191126_0223.py b/qrtr_account/migrations/0002_auto_20191126_0223.py new file mode 100644 index 0000000..26eff52 --- /dev/null +++ b/qrtr_account/migrations/0002_auto_20191126_0223.py @@ -0,0 +1,20 @@ +# Generated by Django 2.2.6 on 2019-11-26 02:23 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('qrtr_account', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='account', + name='owner', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='owned_accounts', to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/qrtr_account/migrations/0003_auto_20191126_0227.py b/qrtr_account/migrations/0003_auto_20191126_0227.py new file mode 100644 index 0000000..47e45f4 --- /dev/null +++ b/qrtr_account/migrations/0003_auto_20191126_0227.py @@ -0,0 +1,24 @@ +# Generated by Django 2.2.6 on 2019-11-26 02:27 + +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('qrtr_account', '0002_auto_20191126_0223'), + ] + + operations = [ + migrations.AlterField( + model_name='account', + name='admin_users', + field=models.ManyToManyField(blank=True, related_name='admin_accounts', to=settings.AUTH_USER_MODEL), + ), + migrations.AlterField( + model_name='account', + name='view_users', + field=models.ManyToManyField(blank=True, related_name='view_accounts', to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/qrtr_account/migrations/0004_auto_20191126_0231.py b/qrtr_account/migrations/0004_auto_20191126_0231.py new file mode 100644 index 0000000..d411820 --- /dev/null +++ b/qrtr_account/migrations/0004_auto_20191126_0231.py @@ -0,0 +1,23 @@ +# Generated by Django 2.2.6 on 2019-11-26 02:31 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('qrtr_account', '0003_auto_20191126_0227'), + ] + + operations = [ + migrations.AlterField( + model_name='bank', + name='ac_subtype', + field=models.CharField(blank=True, max_length=250), + ), + migrations.AlterField( + model_name='bank', + name='ac_type', + field=models.CharField(blank=True, max_length=250), + ), + ]