31 lines
818 B
Python
31 lines
818 B
Python
import time
|
|
from typing import Sequence, Type
|
|
|
|
import orjson
|
|
from tortoise import Model, Tortoise, run_async
|
|
|
|
from service.config import TORTOISE_ORM
|
|
from service.database.models import User
|
|
|
|
|
|
async def do_export():
|
|
export_ts = int(time.time())
|
|
models: Sequence[Type[Model]] = (User,)
|
|
await Tortoise.init(TORTOISE_ORM)
|
|
for filename, model in ((model._meta.db_table, model) for model in models):
|
|
all_objects = await model.all().order_by("id").values()
|
|
if all_objects:
|
|
with open(f"fixtures/{export_ts}__{filename}.json", "wb") as f:
|
|
f.write(orjson.dumps(all_objects))
|
|
|
|
|
|
def main():
|
|
start_ts = time.time()
|
|
run_async(do_export())
|
|
end_ts = time.time()
|
|
print(f"Export completed in {end_ts - start_ts:.3f}s")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|