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:
parent
2c4ec6c0e8
commit
6efb8e8c2d
24
supysonic/schema/migration/mysql/20181010.py
Normal file
24
supysonic/schema/migration/mysql/20181010.py
Normal 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()
|
21
supysonic/schema/migration/postgres/20181010.py
Normal file
21
supysonic/schema/migration/postgres/20181010.py
Normal 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()
|
18
supysonic/schema/migration/sqlite/20181010.py
Normal file
18
supysonic/schema/migration/sqlite/20181010.py
Normal 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')
|
Loading…
Reference in New Issue
Block a user