emmental/db/state.py

81 lines
2.5 KiB
Python

# Copyright 2021 (c) Anna Schumaker.
#
# Table: playlist_states
# +-----------+--------+------+---------+------+
# | plstateid | random | loop | current | sort |
# +-----------+--------+------+---------+------+
from gi.repository import GObject
from . import execute
from . import objects
class PlaylistState(objects.Row):
def do_get_column(self, column):
return execute(f"SELECT {column} FROM playlist_states "
"WHERE plstateid=?", [ self.rowid ])
@GObject.Property(type=bool,default=False)
def random(self):
return bool(self.get_column("random"))
@random.setter
def random(self, newval):
execute("UPDATE playlist_states SET random=? WHERE plstateid=?",
[ newval, self.rowid ])
@GObject.Property(type=bool,default=False)
def loop(self):
return bool(self.get_column("loop"))
@loop.setter
def loop(self, newval):
execute("UPDATE playlist_states SET loop=? WHERE plstateid=?",
[ newval, self.rowid ])
@GObject.Property(type=int)
def current(self):
return self.get_column("current")
@current.setter
def current(self, newval):
execute("UPDATE playlist_states SET current=? WHERE plstateid=?",
[ newval, self.rowid ])
@GObject.Property(type=str)
def sort(self):
return self.get_column("sort")
@sort.setter
def sort(self, newval):
execute("UPDATE playlist_states SET sort=? WHERE plstateid=?",
[ newval, self.rowid ])
class PlaylistStateTable(objects.Table):
def __init__(self):
objects.Table.__init__(self, "playlist_states", PlaylistState)
def do_create(self):
execute("CREATE TABLE IF NOT EXISTS playlist_states "
"(plstateid INTEGER PRIMARY KEY, "
" random INTEGER DEFAULT 0, "
" loop INTEGER DEFAULT 0, "
" current INTEGER DEFAULT -1, "
" sort TEXT)")
def do_insert(self, random, loop):
return execute("INSERT INTO playlist_states (random, loop, sort) "
"VALUES (?, ?, ?)", (random, loop, ""))
def do_delete(self, state):
return execute("DELETE FROM playlist_states WHERE plstateid=?", [ int(state) ])
def do_get(self, rowid):
return execute("SELECT plstateid FROM playlist_states "
"WHERE plstateid=?", [ rowid ])
def insert(self, random=False, loop=False):
return super().insert(random, loop)
Table = PlaylistStateTable()