File tree Expand file tree Collapse file tree 4 files changed +167
-0
lines changed Expand file tree Collapse file tree 4 files changed +167
-0
lines changed Original file line number Diff line number Diff line change 1+ #!/bin/env python
2+ import ellar_cli .click as click
3+ from ellar .app import AppFactory , current_injector
4+ from ellar .common .utils .importer import get_main_directory_by_stack
5+ from ellar_cli .main import create_ellar_cli
6+ from models import User
7+ from sqlalchemy .ext .asyncio import AsyncSession
8+
9+ from ellar_sqlalchemy import EllarSQLAlchemyModule
10+
11+
12+ def bootstrap ():
13+ path = get_main_directory_by_stack (
14+ "__main__/__parent__/__parent__/dumbs/default_async" , stack_level = 1
15+ )
16+ application = AppFactory .create_app (
17+ modules = [
18+ EllarSQLAlchemyModule .setup (
19+ databases = "sqlite+aiosqlite:///app.db" ,
20+ migration_options = {"context_configure" : {"compare_types" : False }},
21+ root_path = str (path ),
22+ )
23+ ]
24+ )
25+ return application
26+
27+
28+ cli = create_ellar_cli ("default_async:bootstrap" )
29+
30+
31+ @cli .command ()
32+ @click .run_as_async
33+ async def add_user ():
34+ session = current_injector .get (AsyncSession )
35+ user = User (name = "default App Ellar" )
36+ session .add (user )
37+
38+ await session .commit ()
39+ await session .refresh (user )
40+ await session .close ()
41+
42+ click .echo (f"<User name={ user .name } id={ user .id } >" )
43+
44+
45+ if __name__ == "__main__" :
46+ cli ()
Original file line number Diff line number Diff line change 1+ #!/bin/env python
2+ import ellar_cli .click as click
3+ from ellar .app import AppFactory , current_injector
4+ from ellar .common .utils .importer import get_main_directory_by_stack
5+ from ellar_cli .main import create_ellar_cli
6+ from models import Group , User
7+ from sqlalchemy .ext .asyncio import AsyncSession
8+
9+ from ellar_sqlalchemy import EllarSQLAlchemyModule
10+
11+
12+ def bootstrap ():
13+ path = get_main_directory_by_stack (
14+ "__main__/__parent__/__parent__/dumbs/multiple_async" , stack_level = 1
15+ )
16+ application = AppFactory .create_app (
17+ modules = [
18+ EllarSQLAlchemyModule .setup (
19+ databases = {
20+ "default" : "sqlite+aiosqlite:///app.db" ,
21+ "db1" : "sqlite+aiosqlite:///app2.db" ,
22+ },
23+ migration_options = {"context_configure" : {"compare_types" : False }},
24+ root_path = str (path ),
25+ )
26+ ]
27+ )
28+ return application
29+
30+
31+ cli = create_ellar_cli ("multiple_database_async:bootstrap" )
32+
33+
34+ @cli .command ()
35+ @click .run_as_async
36+ async def add_user ():
37+ session = current_injector .get (AsyncSession )
38+ user = User (name = "Multiple Database App Ellar" )
39+ group = Group (name = "group" )
40+
41+ session .add (user )
42+ session .add (group )
43+
44+ await session .commit ()
45+
46+ await session .refresh (user )
47+ await session .refresh (group )
48+
49+ await session .close ()
50+
51+ click .echo (
52+ f"<User name={ user .name } id={ user .id } and Group name={ group .name } id={ group .id } >"
53+ )
54+
55+
56+ if __name__ == "__main__" :
57+ cli ()
Original file line number Diff line number Diff line change @@ -132,3 +132,33 @@ def test_other_alembic_commands():
132132 result = run_command ("default.py db downgrade" )
133133 assert result .returncode == 1
134134 assert b"Relative revision -1 didn't produce 1 migrations" in result .stderr
135+
136+
137+ @clean_directory ("default_async" )
138+ def test_migrate_upgrade_async ():
139+ result = run_command ("default_async.py db init" )
140+ assert result .returncode == 0
141+ assert (
142+ b"tests/dumbs/default_async/migrations/alembic.ini' before proceeding."
143+ in result .stdout
144+ )
145+
146+ result = run_command ("default_async.py db check" )
147+ assert result .returncode == 1
148+
149+ result = run_command ("default_async.py db migrate" )
150+ assert result .returncode == 0
151+
152+ result = run_command ("default_async.py db check" )
153+ assert result .returncode == 1
154+
155+ result = run_command ("default_async.py db upgrade" )
156+ assert result .returncode == 0
157+
158+ result = run_command ("default_async.py db check" )
159+ assert result .returncode == 0
160+ assert result .stdout == b"No new upgrade operations detected.\n "
161+
162+ result = run_command ("default_async.py add-user" )
163+ assert result .returncode == 0
164+ assert result .stdout == b"<User name=default App Ellar id=1>\n "
Original file line number Diff line number Diff line change @@ -54,3 +54,37 @@ def test_migrate_upgrade_multiple_database_with_model_changes():
5454 b"Detected type change from VARCHAR(length=256) to String(length=128)"
5555 in result .stderr
5656 )
57+
58+
59+ @clean_directory ("multiple_async" )
60+ def test_migrate_upgrade_for_multiple_database_async ():
61+ with set_env_variable ("multiple_db" , "true" ):
62+ result = run_command ("multiple_database_async.py db init" )
63+ assert result .returncode == 0
64+ assert (
65+ b"tests/dumbs/multiple_async/migrations/alembic.ini' before proceeding."
66+ in result .stdout
67+ )
68+
69+ result = run_command ("multiple_database_async.py db check" )
70+ assert result .returncode == 1
71+
72+ result = run_command ("multiple_database_async.py db migrate" )
73+ assert result .returncode == 0
74+
75+ result = run_command ("multiple_database_async.py db check" )
76+ assert result .returncode == 1
77+
78+ result = run_command ("multiple_database_async.py db upgrade" )
79+ assert result .returncode == 0
80+
81+ result = run_command ("multiple_database_async.py db check" )
82+ assert result .returncode == 0
83+ assert result .stdout == b"No new upgrade operations detected.\n "
84+
85+ result = run_command ("multiple_database_async.py add-user" )
86+ assert result .returncode == 0
87+ assert (
88+ result .stdout
89+ == b"<User name=Multiple Database App Ellar id=1 and Group name=group id=1>\n "
90+ )
You can’t perform that action at this time.
0 commit comments