async function addSite (profileId, url, opts) {
  var release = await lock('watchlist-db')
  try {
    // get date for timestamp in seconds floored
    var ts = (Date.now() / 1000 | 0)

    // check if site already being watched
    var site = await db.get('SELECT rowid, * from watchlist WHERE profileId = ? AND url = ?', [profileId, url])
    if (!site) {
      // add site to watch list
      await db.run('INSERT INTO watchlist (profileId, url, description, seedWhenResolved, createdAt) VALUES (?, ?, ?, ?, ?);', [profileId, url, opts.description, opts.seedWhenResolved, ts])
    }
  } finally {
    release()
  }
  return db.get('SELECT rowid, * from watchlist WHERE profileId = ? AND url = ?', [profileId, url])
}
@param {number} profileId
@param {string} url
@param {Object} opts
@param {string} opts.description
@param {number} opts.seedWhenResolved
@return {Promise<void>}