ensureSchema method

Future<void> ensureSchema()

Implementation

Future<void> ensureSchema() async {
  await dvEnsureFrameworkTable(
    database,
    'CREATE TABLE IF NOT EXISTS $outboxTable (seq BIGINT, sink TEXT, '
    'event_id TEXT, category TEXT, user_id TEXT, anonymous_id TEXT, '
    'record TEXT)',
  );
  await database.execute(identityTableSql);
  final DVAnalyticsSink s = store;
  if (s is DVAnalyticsDatabaseStore) await s.ensureSchema();
  final List<Map<String, Object?>> last = await database
      .query('SELECT seq FROM $outboxTable ORDER BY seq DESC LIMIT 1');
  if (last.isNotEmpty) {
    final Object? seq = last.first['seq'];
    _seq = seq is int ? seq : int.parse('$seq');
  }
  final List<Map<String, Object?>> id = await database.query(
      'SELECT value FROM $identityTable WHERE id = ?',
      <Object?>['anonymous']);
  if (id.isEmpty) {
    await _persistAnonymousId();
  } else {
    _anonymousId = '${id.first['value']}';
  }
}