blob: 575cf59830c75f1ae66ab33717074ee9a2035047 [file] [log] [blame]
#!/usr/bin/python
# Copyright 2018 The Tulsi Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Update the Tulsi dSYM symbol cache."""
import sqlite3
from symbol_cache_schema import SQLITE_SYMBOL_CACHE_PATH
from symbol_cache_schema import SymbolCacheSchema
class UpdateSymbolCache(object):
"""Provides a common interface to update a UUID referencing a dSYM."""
def UpdateUUID(self, uuid, dsym_path, arch):
"""Updates a given UUID entry in the database.
Args:
uuid: A UUID representing a binary slice in the dSYM bundle.
dsym_path: An absolute path to the dSYM bundle.
arch: The binary slice's architecture.
Returns:
None: If no error occurred in inserting the new set of values.
String: If a sqlite3.error was raised upon attempting to store new
values into the dSYM cache.
"""
con = self.cache_schema.connection
cur = con.cursor()
# Relies on the UNIQUE constraint between dsym_path + architecture to
# update the UUID if dsym_path and arch match an existing pair, or
# create a new row if this combination of dsym_path and arch is unique.
try:
cur.execute('INSERT OR REPLACE INTO symbol_cache '
'(uuid, dsym_path, architecture) '
'VALUES("%s", "%s", "%s");' % (uuid, dsym_path, arch))
con.commit()
except sqlite3.Error as e:
return e.message
return None
def __init__(self, db_path=SQLITE_SYMBOL_CACHE_PATH):
self.cache_schema = SymbolCacheSchema(db_path)