mirror of
https://github.com/beetbox/beets.git
synced 2025-12-30 12:32:33 +01:00
Fixed up a couple of query classes for flex attr support.
This commit is contained in:
parent
fbd85ef6ba
commit
8e342a16a1
1 changed files with 12 additions and 6 deletions
|
|
@ -548,7 +548,12 @@ class SubstringQuery(FieldQuery):
|
|||
def clause(self):
|
||||
search = '%' + (self.pattern.replace('\\','\\\\').replace('%','\\%')
|
||||
.replace('_','\\_')) + '%'
|
||||
clause = self.field + " like ? escape '\\'"
|
||||
if self.namespace:
|
||||
clause = """key = {0} AND namespace = {1}
|
||||
AND value like ? escape '\\'""".format(
|
||||
self.field, self.namespace)
|
||||
else:
|
||||
clause = self.field + " like ? escape '\\'"
|
||||
subvals = [search]
|
||||
return clause, subvals
|
||||
|
||||
|
|
@ -559,11 +564,15 @@ class SubstringQuery(FieldQuery):
|
|||
class RegexpQuery(FieldQuery):
|
||||
"""A query that matches a regular expression in a specific item field."""
|
||||
def __init__(self, field, pattern, namespace=None, entity='item'):
|
||||
super(RegexpQuery, self).__init__(field, pattern)
|
||||
super(RegexpQuery, self).__init__(field, pattern, namespace, entity)
|
||||
self.regexp = re.compile(pattern)
|
||||
|
||||
def clause(self):
|
||||
clause = self.field + " REGEXP ?"
|
||||
if self.namespace:
|
||||
clause = 'key = {0} AND namespace = {1} AND value REGEXP ?'.format(
|
||||
self.field, self.namespace)
|
||||
else:
|
||||
clause = self.field + " REGEXP ?"
|
||||
subvals = [self.pattern]
|
||||
return clause, subvals
|
||||
|
||||
|
|
@ -1416,11 +1425,8 @@ class Library(BaseLibrary):
|
|||
flexins = '''INSERT INTO item_attributes
|
||||
(entity_id, key, value, namespace)
|
||||
VALUES (?,?,?);'''
|
||||
flexup = '''UPDATE item_attributes SET value = ? WHERE
|
||||
entity_id = ? AND key = ? AND namespace = ?;'''
|
||||
for ns,attrs in item.flexattrs.iteritems():
|
||||
for key in attrs.dirty:
|
||||
#TODO: use an upsert method to store attrs
|
||||
tx.mutate(flexins, (store_id, key, attrs[key], ns))
|
||||
attrs.dirty.clear()
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue