Fixture import
This commit is contained in:
41
back/migration.py
Normal file
41
back/migration.py
Normal file
@@ -0,0 +1,41 @@
|
||||
import argparse
|
||||
import asyncio
|
||||
import json
|
||||
from os import path
|
||||
|
||||
from app.db import init_db, Entity, Order, Contract, User, AccessToken
|
||||
|
||||
|
||||
models = [Entity, Order, Contract, User]
|
||||
|
||||
|
||||
async def handle_migration(args):
|
||||
await init_db()
|
||||
if args.action == "import-fixtures":
|
||||
for m in models:
|
||||
fname = './fixtures/{}.json'.format(m.__name__)
|
||||
if path.isfile(fname):
|
||||
with open(fname, 'r') as f:
|
||||
content = json.load(f)
|
||||
for r in content:
|
||||
obj = m(**r)
|
||||
obj.save()
|
||||
|
||||
elif args.action == "export-fixtures":
|
||||
for m in models:
|
||||
if await m.count() > 0:
|
||||
with open('./fixtures/{}.json'.format(m.__name__), 'w') as f:
|
||||
body = [o.json() for o in await m.find_all().to_list()]
|
||||
f.write('[\n' + ',\n'.join(body) + '\n]\n')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
parser = argparse.ArgumentParser(
|
||||
prog='migration.py',
|
||||
description='Migrate data and schemas on the crud project',
|
||||
epilog='Bisou')
|
||||
|
||||
parser.add_argument('action', type=str, help="The action to perform")
|
||||
args = parser.parse_args()
|
||||
|
||||
asyncio.run(handle_migration(args))
|
||||
Reference in New Issue
Block a user