| 377 | self._connection.runQuery("INSERT INTO clients_snapshots VALUES (?, ?)", content) |
| 378 | |
| 379 | class RoomDBManager(object): |
| 380 | def __init__(self, dbpath, loadroomscallback): |
| 381 | self._dbPath = dbpath |
| 382 | self._connection = None |
| 383 | self._loadRoomsCallback = loadroomscallback |
| 384 | |
| 385 | def __del__(self): |
| 386 | if self._connection is not None: |
| 387 | self._connection.close() |
| 388 | |
| 389 | def connect(self): |
| 390 | self._connection = adbapi.ConnectionPool("sqlite3", self._dbPath, check_same_thread=False) |
| 391 | self._createSchema().addCallback(self.loadRooms) |
| 392 | |
| 393 | def _createSchema(self): |
| 394 | initQuery = 'create table if not exists persistent_rooms (name STRING PRIMARY KEY, playlist STRING, playlistIndex INTEGER, position REAL, lastSavedUpdate INTEGER)' |
| 395 | return self._connection.runQuery(initQuery) |
| 396 | |
| 397 | def saveRoom(self, name, playlist, playlistIndex, position, lastUpdate): |
| 398 | content = (name, playlist, playlistIndex, position, lastUpdate) |
| 399 | self._connection.runQuery("INSERT OR REPLACE INTO persistent_rooms VALUES (?, ?, ?, ?, ?)", content) |
| 400 | |
| 401 | def deleteRoom(self, name): |
| 402 | self._connection.runQuery("DELETE FROM persistent_rooms where name = ?", [name]) |
| 403 | |
| 404 | def loadRooms(self, result=None): |
| 405 | roomsQuery = "SELECT * FROM persistent_rooms" |
| 406 | rooms = self._connection.runQuery(roomsQuery) |
| 407 | rooms.addCallback(self.loadedRooms) |
| 408 | |
| 409 | def loadedRooms(self, rooms): |
| 410 | self._loadRoomsCallback(rooms) |
| 411 | |
| 412 | class RoomManager(object): |
| 413 | def __init__(self, roomsdbfile=None, permanentRooms=[]): |