1
0
mirror of https://github.com/spl0k/supysonic.git synced 2024-11-13 21:52:18 +00:00

Added some migrations

WARNING: Still not ready for production — schema version needs incrementing, and testing still required
This commit is contained in:
Taizo Simpson 2018-10-12 13:53:56 -04:00
parent 2c4ec6c0e8
commit 6efb8e8c2d
No known key found for this signature in database
GPG Key ID: D197B1197B2D4D68
3 changed files with 63 additions and 0 deletions

View File

@ -0,0 +1,24 @@
import argparse
from supysonic import db
try:
import MySQLdb as provider
except ImportError:
import pymysql as provider
parser = argparse.ArgumentParser()
parser.add_argument('username')
parser.add_argument('password')
parser.add_argument('database')
parser.add_argument('-H', '--host', default = 'localhost', help = 'default: localhost')
args = parser.parse_args()
with provider.connect(host = args.host, user = args.username, passwd = args.password, db = args.database) as conn:
c = conn.cursor()
c.execute('ALTER TABLE track ADD COLUMN has_art BOOLEAN NOT NULL DEFAULT false')
art = dict()
c.execute('SELECT path FROM track')
for row in c:
art[row[0]] = bool(db.Track._extract_cover_art(row[0].encode('utf-8')))
c.executemany('UPDATE track SET has_art=? WHERE path=?', [ (a, p) for p, a in art.items() ])
conn.commit()

View File

@ -0,0 +1,21 @@
import argparse
import psycopg2
from supysonic import db
parser = argparse.ArgumentParser()
parser.add_argument('username')
parser.add_argument('password')
parser.add_argument('database')
parser.add_argument('-H', '--host', default = 'localhost', help = 'default: localhost')
args = parser.parse_args()
with psycopg2.connect(host = args.host, user = args.username, password = args.password, dbname = args.database) as conn:
c = conn.cursor()
c.execute('ALTER TABLE track ADD COLUMN has_art BOOLEAN NOT NULL DEFAULT false')
art = dict()
c.execute('SELECT path FROM track')
for row in c.fetchall():
art[row[0]] = bool(db.Track._extract_cover_art(row[0].encode('utf-8')))
c.executemany('UPDATE track SET has_art=%s WHERE path=%s', [ (a, p) for p, a in art.items() ])
conn.commit()

View File

@ -0,0 +1,18 @@
import argparse
import sqlite3
from supysonic import db
parser = argparse.ArgumentParser()
parser.add_argument('dbfile', help = 'Path to the SQLite database file')
args = parser.parse_args()
with sqlite3.connect(args.dbfile) as conn:
c = conn.cursor()
c.execute('ALTER TABLE track ADD COLUMN has_art BOOLEAN NOT NULL DEFAULT false')
art = dict()
for row in c.execute('SELECT path FROM track'):
art[row[0]] = bool(db.Track._extract_cover_art(row[0].encode('utf-8')))
c.executemany('UPDATE track SET has_art=? WHERE path=?', [ (a, p) for p, a in art.items() ])
conn.commit()
conn.execute('VACUUM')