yhttp-dbmanager 8.1.0__tar.gz → 8.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. {yhttp_dbmanager-8.1.0/yhttp_dbmanager.egg-info → yhttp_dbmanager-8.2.0}/PKG-INFO +1 -1
  2. {yhttp_dbmanager-8.1.0 → yhttp_dbmanager-8.2.0}/tests/test_cli_migration.py +26 -1
  3. {yhttp_dbmanager-8.1.0 → yhttp_dbmanager-8.2.0}/yhttp/ext/dbmanager/__init__.py +1 -1
  4. {yhttp_dbmanager-8.1.0 → yhttp_dbmanager-8.2.0}/yhttp/ext/dbmanager/cli.py +34 -4
  5. {yhttp_dbmanager-8.1.0 → yhttp_dbmanager-8.2.0}/yhttp/ext/dbmanager/migration.py +1 -0
  6. {yhttp_dbmanager-8.1.0 → yhttp_dbmanager-8.2.0/yhttp_dbmanager.egg-info}/PKG-INFO +1 -1
  7. {yhttp_dbmanager-8.1.0 → yhttp_dbmanager-8.2.0}/LICENSE +0 -0
  8. {yhttp_dbmanager-8.1.0 → yhttp_dbmanager-8.2.0}/README.md +0 -0
  9. {yhttp_dbmanager-8.1.0 → yhttp_dbmanager-8.2.0}/setup.cfg +0 -0
  10. {yhttp_dbmanager-8.1.0 → yhttp_dbmanager-8.2.0}/setup.py +0 -0
  11. {yhttp_dbmanager-8.1.0 → yhttp_dbmanager-8.2.0}/tests/test_cli_createdrop.py +0 -0
  12. {yhttp_dbmanager-8.1.0 → yhttp_dbmanager-8.2.0}/tests/test_cli_usercommand.py +0 -0
  13. {yhttp_dbmanager-8.1.0 → yhttp_dbmanager-8.2.0}/tests/test_dbmanager.py +0 -0
  14. {yhttp_dbmanager-8.1.0 → yhttp_dbmanager-8.2.0}/tests/test_dburi.py +0 -0
  15. {yhttp_dbmanager-8.1.0 → yhttp_dbmanager-8.2.0}/tests/test_install.py +0 -0
  16. {yhttp_dbmanager-8.1.0 → yhttp_dbmanager-8.2.0}/tests/test_migrator.py +0 -0
  17. {yhttp_dbmanager-8.1.0 → yhttp_dbmanager-8.2.0}/yhttp/ext/dbmanager/dbmanager.py +0 -0
  18. {yhttp_dbmanager-8.1.0 → yhttp_dbmanager-8.2.0}/yhttp/ext/dbmanager/install.py +0 -0
  19. {yhttp_dbmanager-8.1.0 → yhttp_dbmanager-8.2.0}/yhttp/ext/dbmanager/uri.py +0 -0
  20. {yhttp_dbmanager-8.1.0 → yhttp_dbmanager-8.2.0}/yhttp_dbmanager.egg-info/SOURCES.txt +0 -0
  21. {yhttp_dbmanager-8.1.0 → yhttp_dbmanager-8.2.0}/yhttp_dbmanager.egg-info/dependency_links.txt +0 -0
  22. {yhttp_dbmanager-8.1.0 → yhttp_dbmanager-8.2.0}/yhttp_dbmanager.egg-info/requires.txt +0 -0
  23. {yhttp_dbmanager-8.1.0 → yhttp_dbmanager-8.2.0}/yhttp_dbmanager.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: yhttp-dbmanager
3
- Version: 8.1.0
3
+ Version: 8.2.0
4
4
  Summary: Database manager command line interface and API for yhttp.
5
5
  Home-page: http://github.com/yhttp/yhttp-dbmanager
6
6
  Author: Vahid Mardani
@@ -74,10 +74,35 @@ def test_cli_migration(cicd):
74
74
  assert status == 0
75
75
  assert stdout.endswith('/0002-bar.py.\n')
76
76
 
77
- when('db migration set 1')
77
+ when('db migration set foo')
78
+ assert stderr == 'invalid version: foo\n'
79
+ assert status == 1
80
+ assert stdout == ''
81
+
82
+ when('db migration set 0')
83
+ assert stderr == ''
84
+ assert status == 0
85
+ assert stdout == 'database successfully set to version 0000.\n'
86
+
87
+ when('db migration get')
88
+ assert stderr == ''
89
+ assert status == 0
90
+ assert stdout == '0\n'
91
+
92
+ when('db migration get last')
93
+ assert stderr == ''
94
+ assert status == 0
95
+ assert stdout == '1\n'
96
+
97
+ when('db migration set last')
78
98
  assert stderr == ''
79
99
  assert status == 0
80
100
  assert stdout == 'database successfully set to version 0001.\n'
81
101
 
102
+ when('db migration get')
103
+ assert stderr == ''
104
+ assert status == 0
105
+ assert stdout == '1\n'
106
+
82
107
  when('db drop')
83
108
  assert status == 0
@@ -6,4 +6,4 @@ from .uri import DatabaseURI
6
6
  from .migration import Migrator
7
7
 
8
8
 
9
- __version__ = '8.1.0'
9
+ __version__ = '8.2.0'
@@ -1,4 +1,5 @@
1
1
  import os
2
+ import sys
2
3
  import functools
3
4
  import getpass
4
5
 
@@ -150,20 +151,48 @@ class SetVersionCommand(MigrationSubCommand):
150
151
  __arguments__ = [
151
152
  Argument(
152
153
  'version',
153
- metavar='VERSION',
154
- type=int,
154
+ metavar='VERSION|last',
155
155
  help='database version.'
156
156
  )
157
157
  ]
158
158
 
159
159
  def __call__(self, args):
160
- ver = args.version
161
160
  with self.migrator(args) as m:
161
+ if args.version == 'last':
162
+ ver = m.lastversion
163
+ else:
164
+ try:
165
+ ver = int(args.version)
166
+ except ValueError:
167
+ print(f'invalid version: {args.version}', file=sys.stderr)
168
+ return 1
169
+
162
170
  m.dbversion_set(ver)
163
171
 
164
172
  print(f'database successfully set to version {ver:04d}.')
165
173
 
166
174
 
175
+ class GetLastVersionCommand(MigrationSubCommand):
176
+ __command__ = 'last'
177
+ __aliases__ = ['l']
178
+
179
+ def __call__(self, args):
180
+ with self.migrator(args) as m:
181
+ print(m.lastversion)
182
+
183
+
184
+ class GetVersionCommand(MigrationSubCommand):
185
+ __command__ = 'get'
186
+ __aliases__ = ['g', 'show']
187
+ __arguments__ = [
188
+ GetLastVersionCommand,
189
+ ]
190
+
191
+ def __call__(self, args):
192
+ with self.migrator(args) as m:
193
+ print(m.dbversion())
194
+
195
+
167
196
  class MigrationCommand(SubCommand):
168
197
  __command__ = 'migration'
169
198
  __aliases__ = ['mi']
@@ -171,7 +200,8 @@ class MigrationCommand(SubCommand):
171
200
  UpgradeCommand,
172
201
  DowngradeCommand,
173
202
  NewVersionCommand,
174
- SetVersionCommand
203
+ SetVersionCommand,
204
+ GetVersionCommand
175
205
  ]
176
206
 
177
207
  def __call__(self, args):
@@ -106,6 +106,7 @@ class Migrator:
106
106
  return c.fetchone()[0]
107
107
 
108
108
  def dbversion_set(self, ver):
109
+ self.ensure_versiontable()
109
110
  self.db.execute(f'UPDATE {self.vtable} SET version={ver}')
110
111
  self.db.commit()
111
112
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: yhttp-dbmanager
3
- Version: 8.1.0
3
+ Version: 8.2.0
4
4
  Summary: Database manager command line interface and API for yhttp.
5
5
  Home-page: http://github.com/yhttp/yhttp-dbmanager
6
6
  Author: Vahid Mardani
File without changes