40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
from .data_models import Device
|
|
from .data_models import DataError
|
|
from .db import get_cursor
|
|
from sqlite3 import IntegrityError
|
|
|
|
def _device_from_row(row):
|
|
return Device(
|
|
name = row['device_name'],
|
|
token = row['device_token'],
|
|
encryption_key = row['encryption_key'],
|
|
)
|
|
|
|
|
|
def get_devices():
|
|
with get_cursor() as db_cursor:
|
|
db_cursor.execute("SELECT * FROM device")
|
|
rows = db_cursor.fetchall()
|
|
|
|
return map(_device_from_row, rows)
|
|
|
|
_INSERT_DEVICE_SQL = "INSERT INTO device(device_name, device_token, encryption_key)"\
|
|
"VALUES(:device_name, :device_token, :encryption_key)"
|
|
def insert_device(device: Device):
|
|
params = {
|
|
"device_name": device.name,
|
|
"device_token": device.token,
|
|
"encryption_key": device.encryption_key,
|
|
}
|
|
with get_cursor() as db_cursor:
|
|
try:
|
|
db_cursor.execute(_INSERT_DEVICE_SQL, params)
|
|
except IntegrityError as e:
|
|
return DataError.DEVICE_INSERT_ERROR
|
|
|
|
return db_cursor.lastrowid
|
|
|
|
def delete_device_by_name(name: str):
|
|
with get_cursor() as db_cursor:
|
|
db_cursor.execute('DELETE FROM device WHERE device_name=:name',{'name':name})
|
|
|