9 |
9 |
10 |
10 |
11 from os.path import join, exists |
11 from os.path import join, exists |
12 |
12 |
13 from cubicweb import server |
13 from cubicweb import server |
14 from cubicweb.server.sqlutils import (SQL_PREFIX, SQLAdapterMixIn, sqlexec, |
14 from cubicweb.server.sqlutils import SQL_PREFIX, SQLAdapterMixIn, sqlexec |
15 sql_source_backup, sql_source_restore) |
|
16 from cubicweb.server.sources import native, rql2sql |
15 from cubicweb.server.sources import native, rql2sql |
17 from cubicweb.server.sources import AbstractSource, dbg_st_search, dbg_results |
16 from cubicweb.server.sources import AbstractSource, dbg_st_search, dbg_results |
18 |
17 |
19 class ConnectionWrapper(object): |
18 class ConnectionWrapper(object): |
20 def __init__(self, source=None): |
19 def __init__(self, source=None): |
92 self._need_sql_create = not exists(dbpath) |
91 self._need_sql_create = not exists(dbpath) |
93 self._need_full_import = self._need_sql_create |
92 self._need_full_import = self._need_sql_create |
94 AbstractSource.__init__(self, repo, appschema, source_config, |
93 AbstractSource.__init__(self, repo, appschema, source_config, |
95 *args, **kwargs) |
94 *args, **kwargs) |
96 |
95 |
97 def backup(self, confirm, backupfile=None, timestamp=None, askconfirm=False): |
96 def backup(self, backupfile): |
98 """method called to create a backup of source's data""" |
97 """method called to create a backup of the source's data""" |
99 backupfile = self.backup_file(backupfile, timestamp) |
98 self.close_pool_connections() |
100 sql_source_backup(self, self.sqladapter, confirm, backupfile, |
99 try: |
101 askconfirm) |
100 self.sqladapter.backup_to_file(backupfile) |
102 |
101 finally: |
103 def restore(self, confirm, backupfile=None, timestamp=None, drop=True, |
102 self.open_pool_connections() |
104 askconfirm=False): |
103 |
|
104 def restore(self, backupfile, drop): |
105 """method called to restore a backup of source's data""" |
105 """method called to restore a backup of source's data""" |
106 backupfile = self.backup_file(backupfile, timestamp) |
106 self.close_pool_connections() |
107 sql_source_restore(self, self.sqladapter, confirm, backupfile, drop, |
107 try: |
108 askconfirm) |
108 self.sqladapter.restore_from_file(backupfile, drop) |
|
109 finally: |
|
110 self.open_pool_connections() |
109 |
111 |
110 @property |
112 @property |
111 def _sqlcnx(self): |
113 def _sqlcnx(self): |
112 # XXX: sqlite connections can only be used in the same thread, so |
114 # XXX: sqlite connections can only be used in the same thread, so |
113 # create a new one each time necessary. If it appears to be time |
115 # create a new one each time necessary. If it appears to be time |