content: import 'package:drift/internal/versioned_schema.dart' as i0;
  import 'package:drift/drift.dart' as i1;
  import 'package:drift/drift.dart'; // ignore_for_file: type=lint,unused_import
  import 'package:flutter/material.dart';
  import 'package:spotube/models/database/database.dart';
  import 'package:spotube/models/metadata/market.dart';
  import 'package:spotube/services/sourced_track/enums.dart';
  
  // GENERATED BY drift_dev, DO NOT MODIFY.
  final class Schema2 extends i0.VersionedSchema {
    Schema2({required super.database}) : super(version: 2);
    @override
    late final List<i1.DatabaseSchemaEntity> entities = [
      authenticationTable,
      blacklistTable,
      preferencesTable,
      scrobblerTable,
      skipSegmentTable,
      sourceMatchTable,
      audioPlayerStateTable,
      playlistTable,
      playlistMediaTable,
      historyTable,
      lyricsTable,
      uniqueBlacklist,
      uniqTrackMatch,
    ];
    late final Shape0 authenticationTable = Shape0(
        source: i0.VersionedTable(
          entityName: 'authentication_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_1,
            _column_2,
            _column_3,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape1 blacklistTable = Shape1(
        source: i0.VersionedTable(
          entityName: 'blacklist_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_4,
            _column_5,
            _column_6,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape2 preferencesTable = Shape2(
        source: i0.VersionedTable(
          entityName: 'preferences_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_7,
            _column_8,
            _column_9,
            _column_10,
            _column_11,
            _column_12,
            _column_13,
            _column_14,
            _column_15,
            _column_16,
            _column_17,
            _column_18,
            _column_19,
            _column_20,
            _column_21,
            _column_22,
            _column_23,
            _column_24,
            _column_25,
            _column_26,
            _column_27,
            _column_28,
            _column_29,
            _column_30,
            _column_31,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape3 scrobblerTable = Shape3(
        source: i0.VersionedTable(
          entityName: 'scrobbler_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_32,
            _column_33,
            _column_34,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape4 skipSegmentTable = Shape4(
        source: i0.VersionedTable(
          entityName: 'skip_segment_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_35,
            _column_36,
            _column_37,
            _column_32,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape5 sourceMatchTable = Shape5(
        source: i0.VersionedTable(
          entityName: 'source_match_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_37,
            _column_38,
            _column_39,
            _column_32,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape6 audioPlayerStateTable = Shape6(
        source: i0.VersionedTable(
          entityName: 'audio_player_state_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_40,
            _column_41,
            _column_42,
            _column_43,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape7 playlistTable = Shape7(
        source: i0.VersionedTable(
          entityName: 'playlist_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_44,
            _column_45,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape8 playlistMediaTable = Shape8(
        source: i0.VersionedTable(
          entityName: 'playlist_media_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_46,
            _column_47,
            _column_48,
            _column_49,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape9 historyTable = Shape9(
        source: i0.VersionedTable(
          entityName: 'history_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_32,
            _column_50,
            _column_51,
            _column_52,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape10 lyricsTable = Shape10(
        source: i0.VersionedTable(
          entityName: 'lyrics_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_37,
            _column_52,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    final i1.Index uniqueBlacklist = i1.Index('unique_blacklist',
        'CREATE UNIQUE INDEX unique_blacklist ON blacklist_table (element_type, element_id)');
    final i1.Index uniqTrackMatch = i1.Index('uniq_track_match',
        'CREATE UNIQUE INDEX uniq_track_match ON source_match_table (track_id, source_id, source_type)');
  }
  
  class Shape0 extends i0.VersionedTable {
    Shape0({required super.source, required super.alias}) : super.aliased();
    i1.GeneratedColumn<int> get id =>
        columnsByName['id']! as i1.GeneratedColumn<int>;
    i1.GeneratedColumn<String> get cookie =>
        columnsByName['cookie']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get accessToken =>
        columnsByName['access_token']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<DateTime> get expiration =>
        columnsByName['expiration']! as i1.GeneratedColumn<DateTime>;
  }
  
  i1.GeneratedColumn<int> _column_0(String aliasedName) =>
      i1.GeneratedColumn<int>('id', aliasedName, false,
          hasAutoIncrement: true,
          type: i1.DriftSqlType.int,
          defaultConstraints:
              i1.GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT'));
  i1.GeneratedColumn<String> _column_1(String aliasedName) =>
      i1.GeneratedColumn<String>('cookie', aliasedName, false,
          type: i1.DriftSqlType.string);
  i1.GeneratedColumn<String> _column_2(String aliasedName) =>
      i1.GeneratedColumn<String>('access_token', aliasedName, false,
          type: i1.DriftSqlType.string);
  i1.GeneratedColumn<DateTime> _column_3(String aliasedName) =>
      i1.GeneratedColumn<DateTime>('expiration', aliasedName, false,
          type: i1.DriftSqlType.dateTime);
  
  class Shape1 extends i0.VersionedTable {
    Shape1({required super.source, required super.alias}) : super.aliased();
    i1.GeneratedColumn<int> get id =>
        columnsByName['id']! as i1.GeneratedColumn<int>;
    i1.GeneratedColumn<String> get name =>
        columnsByName['name']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get elementType =>
        columnsByName['element_type']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get elementId =>
        columnsByName['element_id']! as i1.GeneratedColumn<String>;
  }
  
  i1.GeneratedColumn<String> _column_4(String aliasedName) =>
      i1.GeneratedColumn<String>('name', aliasedName, false,
          type: i1.DriftSqlType.string);
  i1.GeneratedColumn<String> _column_5(String aliasedName) =>
      i1.GeneratedColumn<String>('element_type', aliasedName, false,
          type: i1.DriftSqlType.string);
  i1.GeneratedColumn<String> _column_6(String aliasedName) =>
      i1.GeneratedColumn<String>('element_id', aliasedName, false,
          type: i1.DriftSqlType.string);
  
  class Shape2 extends i0.VersionedTable {
    Shape2({required super.source, required super.alias}) : super.aliased();
    i1.GeneratedColumn<int> get id =>
        columnsByName['id']! as i1.GeneratedColumn<int>;
    i1.GeneratedColumn<String> get audioQuality =>
        columnsByName['audio_quality']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<bool> get albumColorSync =>
        columnsByName['album_color_sync']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get amoledDarkTheme =>
        columnsByName['amoled_dark_theme']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get checkUpdate =>
        columnsByName['check_update']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get normalizeAudio =>
        columnsByName['normalize_audio']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get showSystemTrayIcon =>
        columnsByName['show_system_tray_icon']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get systemTitleBar =>
        columnsByName['system_title_bar']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get skipNonMusic =>
        columnsByName['skip_non_music']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<String> get closeBehavior =>
        columnsByName['close_behavior']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get accentColorScheme =>
        columnsByName['accent_color_scheme']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get layoutMode =>
        columnsByName['layout_mode']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get locale =>
        columnsByName['locale']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get market =>
        columnsByName['market']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get searchMode =>
        columnsByName['search_mode']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get downloadLocation =>
        columnsByName['download_location']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get localLibraryLocation =>
        columnsByName['local_library_location']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get pipedInstance =>
        columnsByName['piped_instance']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get invidiousInstance =>
        columnsByName['invidious_instance']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get themeMode =>
        columnsByName['theme_mode']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get audioSource =>
        columnsByName['audio_source']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get streamMusicCodec =>
        columnsByName['stream_music_codec']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get downloadMusicCodec =>
        columnsByName['download_music_codec']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<bool> get discordPresence =>
        columnsByName['discord_presence']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get endlessPlayback =>
        columnsByName['endless_playback']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get enableConnect =>
        columnsByName['enable_connect']! as i1.GeneratedColumn<bool>;
  }
  
  i1.GeneratedColumn<String> _column_7(String aliasedName) =>
      i1.GeneratedColumn<String>('audio_quality', aliasedName, false,
          type: i1.DriftSqlType.string,
          defaultValue: Constant(SourceQualities.high.name));
  i1.GeneratedColumn<bool> _column_8(String aliasedName) =>
      i1.GeneratedColumn<bool>('album_color_sync', aliasedName, false,
          type: i1.DriftSqlType.bool,
          defaultConstraints: i1.GeneratedColumn.constraintIsAlways(
              'CHECK ("album_color_sync" IN (0, 1))'),
          defaultValue: const Constant(true));
  i1.GeneratedColumn<bool> _column_9(String aliasedName) =>
      i1.GeneratedColumn<bool>('amoled_dark_theme', aliasedName, false,
          type: i1.DriftSqlType.bool,
          defaultConstraints: i1.GeneratedColumn.constraintIsAlways(
              'CHECK ("amoled_dark_theme" IN (0, 1))'),
          defaultValue: const Constant(false));
  i1.GeneratedColumn<bool> _column_10(String aliasedName) =>
      i1.GeneratedColumn<bool>('check_update', aliasedName, false,
          type: i1.DriftSqlType.bool,
          defaultConstraints: i1.GeneratedColumn.constraintIsAlways(
              'CHECK ("check_update" IN (0, 1))'),
          defaultValue: const Constant(true));
  i1.GeneratedColumn<bool> _column_11(String aliasedName) =>
      i1.GeneratedColumn<bool>('normalize_audio', aliasedName, false,
          type: i1.DriftSqlType.bool,
          defaultConstraints: i1.GeneratedColumn.constraintIsAlways(
              'CHECK ("normalize_audio" IN (0, 1))'),
          defaultValue: const Constant(false));
  i1.GeneratedColumn<bool> _column_12(String aliasedName) =>
      i1.GeneratedColumn<bool>('show_system_tray_icon', aliasedName, false,
          type: i1.DriftSqlType.bool,
          defaultConstraints: i1.GeneratedColumn.constraintIsAlways(
              'CHECK ("show_system_tray_icon" IN (0, 1))'),
          defaultValue: const Constant(false));
  i1.GeneratedColumn<bool> _column_13(String aliasedName) =>
      i1.GeneratedColumn<bool>('system_title_bar', aliasedName, false,
          type: i1.DriftSqlType.bool,
          defaultConstraints: i1.GeneratedColumn.constraintIsAlways(
              'CHECK ("system_title_bar" IN (0, 1))'),
          defaultValue: const Constant(false));
  i1.GeneratedColumn<bool> _column_14(String aliasedName) =>
      i1.GeneratedColumn<bool>('skip_non_music', aliasedName, false,
          type: i1.DriftSqlType.bool,
          defaultConstraints: i1.GeneratedColumn.constraintIsAlways(
              'CHECK ("skip_non_music" IN (0, 1))'),
          defaultValue: const Constant(false));
  i1.GeneratedColumn<String> _column_15(String aliasedName) =>
      i1.GeneratedColumn<String>('close_behavior', aliasedName, false,
          type: i1.DriftSqlType.string,
          defaultValue: Constant(CloseBehavior.close.name));
  i1.GeneratedColumn<String> _column_16(String aliasedName) =>
      i1.GeneratedColumn<String>('accent_color_scheme', aliasedName, false,
          type: i1.DriftSqlType.string,
          defaultValue: const Constant("Blue:0xFF2196F3"));
  i1.GeneratedColumn<String> _column_17(String aliasedName) =>
      i1.GeneratedColumn<String>('layout_mode', aliasedName, false,
          type: i1.DriftSqlType.string,
          defaultValue: Constant(LayoutMode.adaptive.name));
  i1.GeneratedColumn<String> _column_18(String aliasedName) =>
      i1.GeneratedColumn<String>('locale', aliasedName, false,
          type: i1.DriftSqlType.string,
          defaultValue:
              const Constant('{"languageCode":"system","countryCode":"system"}'));
  i1.GeneratedColumn<String> _column_19(String aliasedName) =>
      i1.GeneratedColumn<String>('market', aliasedName, false,
          type: i1.DriftSqlType.string, defaultValue: Constant(Market.US.name));
  i1.GeneratedColumn<String> _column_20(String aliasedName) =>
      i1.GeneratedColumn<String>('search_mode', aliasedName, false,
          type: i1.DriftSqlType.string,
          defaultValue: Constant(SearchMode.youtube.name));
  i1.GeneratedColumn<String> _column_21(String aliasedName) =>
      i1.GeneratedColumn<String>('download_location', aliasedName, false,
          type: i1.DriftSqlType.string, defaultValue: const Constant(""));
  i1.GeneratedColumn<String> _column_22(String aliasedName) =>
      i1.GeneratedColumn<String>('local_library_location', aliasedName, false,
          type: i1.DriftSqlType.string, defaultValue: const Constant(""));
  i1.GeneratedColumn<String> _column_23(String aliasedName) =>
      i1.GeneratedColumn<String>('piped_instance', aliasedName, false,
          type: i1.DriftSqlType.string,
          defaultValue: const Constant("https://pipedapi.kavin.rocks"));
  i1.GeneratedColumn<String> _column_24(String aliasedName) =>
      i1.GeneratedColumn<String>('invidious_instance', aliasedName, false,
          type: i1.DriftSqlType.string,
          defaultValue: const Constant("https://inv.nadeko.net"));
  i1.GeneratedColumn<String> _column_25(String aliasedName) =>
      i1.GeneratedColumn<String>('theme_mode', aliasedName, false,
          type: i1.DriftSqlType.string,
          defaultValue: Constant(ThemeMode.system.name));
  i1.GeneratedColumn<String> _column_26(String aliasedName) =>
      i1.GeneratedColumn<String>('audio_source', aliasedName, false,
          type: i1.DriftSqlType.string,
          defaultValue: Constant(AudioSource.youtube.name));
  i1.GeneratedColumn<String> _column_27(String aliasedName) =>
      i1.GeneratedColumn<String>('stream_music_codec', aliasedName, false,
          type: i1.DriftSqlType.string,
          defaultValue: Constant(SourceCodecs.weba.name));
  i1.GeneratedColumn<String> _column_28(String aliasedName) =>
      i1.GeneratedColumn<String>('download_music_codec', aliasedName, false,
          type: i1.DriftSqlType.string,
          defaultValue: Constant(SourceCodecs.m4a.name));
  i1.GeneratedColumn<bool> _column_29(String aliasedName) =>
      i1.GeneratedColumn<bool>('discord_presence', aliasedName, false,
          type: i1.DriftSqlType.bool,
          defaultConstraints: i1.GeneratedColumn.constraintIsAlways(
              'CHECK ("discord_presence" IN (0, 1))'),
          defaultValue: const Constant(true));
  i1.GeneratedColumn<bool> _column_30(String aliasedName) =>
      i1.GeneratedColumn<bool>('endless_playback', aliasedName, false,
          type: i1.DriftSqlType.bool,
          defaultConstraints: i1.GeneratedColumn.constraintIsAlways(
              'CHECK ("endless_playback" IN (0, 1))'),
          defaultValue: const Constant(true));
  i1.GeneratedColumn<bool> _column_31(String aliasedName) =>
      i1.GeneratedColumn<bool>('enable_connect', aliasedName, false,
          type: i1.DriftSqlType.bool,
          defaultConstraints: i1.GeneratedColumn.constraintIsAlways(
              'CHECK ("enable_connect" IN (0, 1))'),
          defaultValue: const Constant(false));
  
  class Shape3 extends i0.VersionedTable {
    Shape3({required super.source, required super.alias}) : super.aliased();
    i1.GeneratedColumn<int> get id =>
        columnsByName['id']! as i1.GeneratedColumn<int>;
    i1.GeneratedColumn<DateTime> get createdAt =>
        columnsByName['created_at']! as i1.GeneratedColumn<DateTime>;
    i1.GeneratedColumn<String> get username =>
        columnsByName['username']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get passwordHash =>
        columnsByName['password_hash']! as i1.GeneratedColumn<String>;
  }
  
  i1.GeneratedColumn<DateTime> _column_32(String aliasedName) =>
      i1.GeneratedColumn<DateTime>('created_at', aliasedName, false,
          type: i1.DriftSqlType.dateTime, defaultValue: currentDateAndTime);
  i1.GeneratedColumn<String> _column_33(String aliasedName) =>
      i1.GeneratedColumn<String>('username', aliasedName, false,
          type: i1.DriftSqlType.string);
  i1.GeneratedColumn<String> _column_34(String aliasedName) =>
      i1.GeneratedColumn<String>('password_hash', aliasedName, false,
          type: i1.DriftSqlType.string);
  
  class Shape4 extends i0.VersionedTable {
    Shape4({required super.source, required super.alias}) : super.aliased();
    i1.GeneratedColumn<int> get id =>
        columnsByName['id']! as i1.GeneratedColumn<int>;
    i1.GeneratedColumn<int> get start =>
        columnsByName['start']! as i1.GeneratedColumn<int>;
    i1.GeneratedColumn<int> get end =>
        columnsByName['end']! as i1.GeneratedColumn<int>;
    i1.GeneratedColumn<String> get trackId =>
        columnsByName['track_id']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<DateTime> get createdAt =>
        columnsByName['created_at']! as i1.GeneratedColumn<DateTime>;
  }
  
  i1.GeneratedColumn<int> _column_35(String aliasedName) =>
      i1.GeneratedColumn<int>('start', aliasedName, false,
          type: i1.DriftSqlType.int);
  i1.GeneratedColumn<int> _column_36(String aliasedName) =>
      i1.GeneratedColumn<int>('end', aliasedName, false,
          type: i1.DriftSqlType.int);
  i1.GeneratedColumn<String> _column_37(String aliasedName) =>
      i1.GeneratedColumn<String>('track_id', aliasedName, false,
          type: i1.DriftSqlType.string);
  
  class Shape5 extends i0.VersionedTable {
    Shape5({required super.source, required super.alias}) : super.aliased();
    i1.GeneratedColumn<int> get id =>
        columnsByName['id']! as i1.GeneratedColumn<int>;
    i1.GeneratedColumn<String> get trackId =>
        columnsByName['track_id']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get sourceId =>
        columnsByName['source_id']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get sourceType =>
        columnsByName['source_type']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<DateTime> get createdAt =>
        columnsByName['created_at']! as i1.GeneratedColumn<DateTime>;
  }
  
  i1.GeneratedColumn<String> _column_38(String aliasedName) =>
      i1.GeneratedColumn<String>('source_id', aliasedName, false,
          type: i1.DriftSqlType.string);
  i1.GeneratedColumn<String> _column_39(String aliasedName) =>
      i1.GeneratedColumn<String>('source_type', aliasedName, false,
          type: i1.DriftSqlType.string,
          defaultValue: Constant(SourceType.youtube.name));
  
  class Shape6 extends i0.VersionedTable {
    Shape6({required super.source, required super.alias}) : super.aliased();
    i1.GeneratedColumn<int> get id =>
        columnsByName['id']! as i1.GeneratedColumn<int>;
    i1.GeneratedColumn<bool> get playing =>
        columnsByName['playing']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<String> get loopMode =>
        columnsByName['loop_mode']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<bool> get shuffled =>
        columnsByName['shuffled']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<String> get collections =>
        columnsByName['collections']! as i1.GeneratedColumn<String>;
  }
  
  i1.GeneratedColumn<bool> _column_40(String aliasedName) =>
      i1.GeneratedColumn<bool>('playing', aliasedName, false,
          type: i1.DriftSqlType.bool,
          defaultConstraints: i1.GeneratedColumn.constraintIsAlways(
              'CHECK ("playing" IN (0, 1))'));
  i1.GeneratedColumn<String> _column_41(String aliasedName) =>
      i1.GeneratedColumn<String>('loop_mode', aliasedName, false,
          type: i1.DriftSqlType.string);
  i1.GeneratedColumn<bool> _column_42(String aliasedName) =>
      i1.GeneratedColumn<bool>('shuffled', aliasedName, false,
          type: i1.DriftSqlType.bool,
          defaultConstraints: i1.GeneratedColumn.constraintIsAlways(
              'CHECK ("shuffled" IN (0, 1))'));
  i1.GeneratedColumn<String> _column_43(String aliasedName) =>
      i1.GeneratedColumn<String>('collections', aliasedName, false,
          type: i1.DriftSqlType.string);
  
  class Shape7 extends i0.VersionedTable {
    Shape7({required super.source, required super.alias}) : super.aliased();
    i1.GeneratedColumn<int> get id =>
        columnsByName['id']! as i1.GeneratedColumn<int>;
    i1.GeneratedColumn<int> get audioPlayerStateId =>
        columnsByName['audio_player_state_id']! as i1.GeneratedColumn<int>;
    i1.GeneratedColumn<int> get index =>
        columnsByName['index']! as i1.GeneratedColumn<int>;
  }
  
  i1.GeneratedColumn<int> _column_44(String aliasedName) =>
      i1.GeneratedColumn<int>('audio_player_state_id', aliasedName, false,
          type: i1.DriftSqlType.int,
          defaultConstraints: i1.GeneratedColumn.constraintIsAlways(
              'REFERENCES audio_player_state_table (id)'));
  i1.GeneratedColumn<int> _column_45(String aliasedName) =>
      i1.GeneratedColumn<int>('index', aliasedName, false,
          type: i1.DriftSqlType.int);
  
  class Shape8 extends i0.VersionedTable {
    Shape8({required super.source, required super.alias}) : super.aliased();
    i1.GeneratedColumn<int> get id =>
        columnsByName['id']! as i1.GeneratedColumn<int>;
    i1.GeneratedColumn<int> get playlistId =>
        columnsByName['playlist_id']! as i1.GeneratedColumn<int>;
    i1.GeneratedColumn<String> get uri =>
        columnsByName['uri']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get extras =>
        columnsByName['extras']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get httpHeaders =>
        columnsByName['http_headers']! as i1.GeneratedColumn<String>;
  }
  
  i1.GeneratedColumn<int> _column_46(String aliasedName) =>
      i1.GeneratedColumn<int>('playlist_id', aliasedName, false,
          type: i1.DriftSqlType.int,
          defaultConstraints: i1.GeneratedColumn.constraintIsAlways(
              'REFERENCES playlist_table (id)'));
  i1.GeneratedColumn<String> _column_47(String aliasedName) =>
      i1.GeneratedColumn<String>('uri', aliasedName, false,
          type: i1.DriftSqlType.string);
  i1.GeneratedColumn<String> _column_48(String aliasedName) =>
      i1.GeneratedColumn<String>('extras', aliasedName, true,
          type: i1.DriftSqlType.string);
  i1.GeneratedColumn<String> _column_49(String aliasedName) =>
      i1.GeneratedColumn<String>('http_headers', aliasedName, true,
          type: i1.DriftSqlType.string);
  
  class Shape9 extends i0.VersionedTable {
    Shape9({required super.source, required super.alias}) : super.aliased();
    i1.GeneratedColumn<int> get id =>
        columnsByName['id']! as i1.GeneratedColumn<int>;
    i1.GeneratedColumn<DateTime> get createdAt =>
        columnsByName['created_at']! as i1.GeneratedColumn<DateTime>;
    i1.GeneratedColumn<String> get type =>
        columnsByName['type']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get itemId =>
        columnsByName['item_id']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get data =>
        columnsByName['data']! as i1.GeneratedColumn<String>;
  }
  
  i1.GeneratedColumn<String> _column_50(String aliasedName) =>
      i1.GeneratedColumn<String>('type', aliasedName, false,
          type: i1.DriftSqlType.string);
  i1.GeneratedColumn<String> _column_51(String aliasedName) =>
      i1.GeneratedColumn<String>('item_id', aliasedName, false,
          type: i1.DriftSqlType.string);
  i1.GeneratedColumn<String> _column_52(String aliasedName) =>
      i1.GeneratedColumn<String>('data', aliasedName, false,
          type: i1.DriftSqlType.string);
  
  class Shape10 extends i0.VersionedTable {
    Shape10({required super.source, required super.alias}) : super.aliased();
    i1.GeneratedColumn<int> get id =>
        columnsByName['id']! as i1.GeneratedColumn<int>;
    i1.GeneratedColumn<String> get trackId =>
        columnsByName['track_id']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get data =>
        columnsByName['data']! as i1.GeneratedColumn<String>;
  }
  
  final class Schema3 extends i0.VersionedSchema {
    Schema3({required super.database}) : super(version: 3);
    @override
    late final List<i1.DatabaseSchemaEntity> entities = [
      authenticationTable,
      blacklistTable,
      preferencesTable,
      scrobblerTable,
      skipSegmentTable,
      sourceMatchTable,
      audioPlayerStateTable,
      playlistTable,
      playlistMediaTable,
      historyTable,
      lyricsTable,
      uniqueBlacklist,
      uniqTrackMatch,
    ];
    late final Shape0 authenticationTable = Shape0(
        source: i0.VersionedTable(
          entityName: 'authentication_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_1,
            _column_2,
            _column_3,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape1 blacklistTable = Shape1(
        source: i0.VersionedTable(
          entityName: 'blacklist_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_4,
            _column_5,
            _column_6,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape11 preferencesTable = Shape11(
        source: i0.VersionedTable(
          entityName: 'preferences_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_7,
            _column_8,
            _column_9,
            _column_10,
            _column_11,
            _column_12,
            _column_13,
            _column_14,
            _column_15,
            _column_16,
            _column_17,
            _column_18,
            _column_19,
            _column_20,
            _column_21,
            _column_22,
            _column_23,
            _column_24,
            _column_25,
            _column_26,
            _column_27,
            _column_28,
            _column_29,
            _column_30,
            _column_31,
            _column_53,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape3 scrobblerTable = Shape3(
        source: i0.VersionedTable(
          entityName: 'scrobbler_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_32,
            _column_33,
            _column_34,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape4 skipSegmentTable = Shape4(
        source: i0.VersionedTable(
          entityName: 'skip_segment_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_35,
            _column_36,
            _column_37,
            _column_32,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape5 sourceMatchTable = Shape5(
        source: i0.VersionedTable(
          entityName: 'source_match_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_37,
            _column_38,
            _column_39,
            _column_32,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape6 audioPlayerStateTable = Shape6(
        source: i0.VersionedTable(
          entityName: 'audio_player_state_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_40,
            _column_41,
            _column_42,
            _column_43,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape7 playlistTable = Shape7(
        source: i0.VersionedTable(
          entityName: 'playlist_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_44,
            _column_45,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape8 playlistMediaTable = Shape8(
        source: i0.VersionedTable(
          entityName: 'playlist_media_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_46,
            _column_47,
            _column_48,
            _column_49,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape9 historyTable = Shape9(
        source: i0.VersionedTable(
          entityName: 'history_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_32,
            _column_50,
            _column_51,
            _column_52,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape10 lyricsTable = Shape10(
        source: i0.VersionedTable(
          entityName: 'lyrics_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_37,
            _column_52,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    final i1.Index uniqueBlacklist = i1.Index('unique_blacklist',
        'CREATE UNIQUE INDEX unique_blacklist ON blacklist_table (element_type, element_id)');
    final i1.Index uniqTrackMatch = i1.Index('uniq_track_match',
        'CREATE UNIQUE INDEX uniq_track_match ON source_match_table (track_id, source_id, source_type)');
  }
  
  class Shape11 extends i0.VersionedTable {
    Shape11({required super.source, required super.alias}) : super.aliased();
    i1.GeneratedColumn<int> get id =>
        columnsByName['id']! as i1.GeneratedColumn<int>;
    i1.GeneratedColumn<String> get audioQuality =>
        columnsByName['audio_quality']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<bool> get albumColorSync =>
        columnsByName['album_color_sync']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get amoledDarkTheme =>
        columnsByName['amoled_dark_theme']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get checkUpdate =>
        columnsByName['check_update']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get normalizeAudio =>
        columnsByName['normalize_audio']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get showSystemTrayIcon =>
        columnsByName['show_system_tray_icon']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get systemTitleBar =>
        columnsByName['system_title_bar']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get skipNonMusic =>
        columnsByName['skip_non_music']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<String> get closeBehavior =>
        columnsByName['close_behavior']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get accentColorScheme =>
        columnsByName['accent_color_scheme']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get layoutMode =>
        columnsByName['layout_mode']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get locale =>
        columnsByName['locale']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get market =>
        columnsByName['market']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get searchMode =>
        columnsByName['search_mode']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get downloadLocation =>
        columnsByName['download_location']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get localLibraryLocation =>
        columnsByName['local_library_location']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get pipedInstance =>
        columnsByName['piped_instance']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get invidiousInstance =>
        columnsByName['invidious_instance']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get themeMode =>
        columnsByName['theme_mode']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get audioSource =>
        columnsByName['audio_source']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get streamMusicCodec =>
        columnsByName['stream_music_codec']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get downloadMusicCodec =>
        columnsByName['download_music_codec']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<bool> get discordPresence =>
        columnsByName['discord_presence']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get endlessPlayback =>
        columnsByName['endless_playback']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get enableConnect =>
        columnsByName['enable_connect']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get cacheMusic =>
        columnsByName['cache_music']! as i1.GeneratedColumn<bool>;
  }
  
  i1.GeneratedColumn<bool> _column_53(String aliasedName) =>
      i1.GeneratedColumn<bool>('cache_music', aliasedName, false,
          type: i1.DriftSqlType.bool,
          defaultConstraints: i1.GeneratedColumn.constraintIsAlways(
              'CHECK ("cache_music" IN (0, 1))'),
          defaultValue: const Constant(true));
  
  final class Schema4 extends i0.VersionedSchema {
    Schema4({required super.database}) : super(version: 4);
    @override
    late final List<i1.DatabaseSchemaEntity> entities = [
      authenticationTable,
      blacklistTable,
      preferencesTable,
      scrobblerTable,
      skipSegmentTable,
      sourceMatchTable,
      audioPlayerStateTable,
      playlistTable,
      playlistMediaTable,
      historyTable,
      lyricsTable,
      uniqueBlacklist,
      uniqTrackMatch,
    ];
    late final Shape0 authenticationTable = Shape0(
        source: i0.VersionedTable(
          entityName: 'authentication_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_1,
            _column_2,
            _column_3,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape1 blacklistTable = Shape1(
        source: i0.VersionedTable(
          entityName: 'blacklist_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_4,
            _column_5,
            _column_6,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape12 preferencesTable = Shape12(
        source: i0.VersionedTable(
          entityName: 'preferences_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_7,
            _column_8,
            _column_9,
            _column_10,
            _column_11,
            _column_12,
            _column_13,
            _column_14,
            _column_15,
            _column_16,
            _column_17,
            _column_18,
            _column_19,
            _column_20,
            _column_21,
            _column_22,
            _column_23,
            _column_24,
            _column_25,
            _column_26,
            _column_54,
            _column_27,
            _column_28,
            _column_29,
            _column_30,
            _column_31,
            _column_53,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape3 scrobblerTable = Shape3(
        source: i0.VersionedTable(
          entityName: 'scrobbler_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_32,
            _column_33,
            _column_34,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape4 skipSegmentTable = Shape4(
        source: i0.VersionedTable(
          entityName: 'skip_segment_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_35,
            _column_36,
            _column_37,
            _column_32,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape5 sourceMatchTable = Shape5(
        source: i0.VersionedTable(
          entityName: 'source_match_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_37,
            _column_38,
            _column_39,
            _column_32,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape6 audioPlayerStateTable = Shape6(
        source: i0.VersionedTable(
          entityName: 'audio_player_state_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_40,
            _column_41,
            _column_42,
            _column_43,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape7 playlistTable = Shape7(
        source: i0.VersionedTable(
          entityName: 'playlist_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_44,
            _column_45,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape8 playlistMediaTable = Shape8(
        source: i0.VersionedTable(
          entityName: 'playlist_media_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_46,
            _column_47,
            _column_48,
            _column_49,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape9 historyTable = Shape9(
        source: i0.VersionedTable(
          entityName: 'history_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_32,
            _column_50,
            _column_51,
            _column_52,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape10 lyricsTable = Shape10(
        source: i0.VersionedTable(
          entityName: 'lyrics_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_37,
            _column_52,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    final i1.Index uniqueBlacklist = i1.Index('unique_blacklist',
        'CREATE UNIQUE INDEX unique_blacklist ON blacklist_table (element_type, element_id)');
    final i1.Index uniqTrackMatch = i1.Index('uniq_track_match',
        'CREATE UNIQUE INDEX uniq_track_match ON source_match_table (track_id, source_id, source_type)');
  }
  
  class Shape12 extends i0.VersionedTable {
    Shape12({required super.source, required super.alias}) : super.aliased();
    i1.GeneratedColumn<int> get id =>
        columnsByName['id']! as i1.GeneratedColumn<int>;
    i1.GeneratedColumn<String> get audioQuality =>
        columnsByName['audio_quality']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<bool> get albumColorSync =>
        columnsByName['album_color_sync']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get amoledDarkTheme =>
        columnsByName['amoled_dark_theme']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get checkUpdate =>
        columnsByName['check_update']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get normalizeAudio =>
        columnsByName['normalize_audio']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get showSystemTrayIcon =>
        columnsByName['show_system_tray_icon']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get systemTitleBar =>
        columnsByName['system_title_bar']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get skipNonMusic =>
        columnsByName['skip_non_music']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<String> get closeBehavior =>
        columnsByName['close_behavior']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get accentColorScheme =>
        columnsByName['accent_color_scheme']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get layoutMode =>
        columnsByName['layout_mode']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get locale =>
        columnsByName['locale']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get market =>
        columnsByName['market']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get searchMode =>
        columnsByName['search_mode']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get downloadLocation =>
        columnsByName['download_location']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get localLibraryLocation =>
        columnsByName['local_library_location']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get pipedInstance =>
        columnsByName['piped_instance']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get invidiousInstance =>
        columnsByName['invidious_instance']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get themeMode =>
        columnsByName['theme_mode']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get audioSource =>
        columnsByName['audio_source']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get youtubeClientEngine =>
        columnsByName['youtube_client_engine']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get streamMusicCodec =>
        columnsByName['stream_music_codec']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get downloadMusicCodec =>
        columnsByName['download_music_codec']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<bool> get discordPresence =>
        columnsByName['discord_presence']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get endlessPlayback =>
        columnsByName['endless_playback']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get enableConnect =>
        columnsByName['enable_connect']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get cacheMusic =>
        columnsByName['cache_music']! as i1.GeneratedColumn<bool>;
  }
  
  i1.GeneratedColumn<String> _column_54(String aliasedName) =>
      i1.GeneratedColumn<String>('youtube_client_engine', aliasedName, false,
          type: i1.DriftSqlType.string,
          defaultValue: Constant(YoutubeClientEngine.youtubeExplode.name));
  
  final class Schema5 extends i0.VersionedSchema {
    Schema5({required super.database}) : super(version: 5);
    @override
    late final List<i1.DatabaseSchemaEntity> entities = [
      authenticationTable,
      blacklistTable,
      preferencesTable,
      scrobblerTable,
      skipSegmentTable,
      sourceMatchTable,
      audioPlayerStateTable,
      playlistTable,
      playlistMediaTable,
      historyTable,
      lyricsTable,
      uniqueBlacklist,
      uniqTrackMatch,
    ];
    late final Shape0 authenticationTable = Shape0(
        source: i0.VersionedTable(
          entityName: 'authentication_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_1,
            _column_2,
            _column_3,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape1 blacklistTable = Shape1(
        source: i0.VersionedTable(
          entityName: 'blacklist_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_4,
            _column_5,
            _column_6,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape12 preferencesTable = Shape12(
        source: i0.VersionedTable(
          entityName: 'preferences_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_7,
            _column_8,
            _column_9,
            _column_10,
            _column_11,
            _column_12,
            _column_13,
            _column_14,
            _column_15,
            _column_55,
            _column_17,
            _column_18,
            _column_19,
            _column_20,
            _column_21,
            _column_22,
            _column_23,
            _column_24,
            _column_25,
            _column_26,
            _column_54,
            _column_27,
            _column_28,
            _column_29,
            _column_30,
            _column_31,
            _column_53,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape3 scrobblerTable = Shape3(
        source: i0.VersionedTable(
          entityName: 'scrobbler_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_32,
            _column_33,
            _column_34,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape4 skipSegmentTable = Shape4(
        source: i0.VersionedTable(
          entityName: 'skip_segment_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_35,
            _column_36,
            _column_37,
            _column_32,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape5 sourceMatchTable = Shape5(
        source: i0.VersionedTable(
          entityName: 'source_match_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_37,
            _column_38,
            _column_39,
            _column_32,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape6 audioPlayerStateTable = Shape6(
        source: i0.VersionedTable(
          entityName: 'audio_player_state_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_40,
            _column_41,
            _column_42,
            _column_43,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape7 playlistTable = Shape7(
        source: i0.VersionedTable(
          entityName: 'playlist_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_44,
            _column_45,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape8 playlistMediaTable = Shape8(
        source: i0.VersionedTable(
          entityName: 'playlist_media_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_46,
            _column_47,
            _column_48,
            _column_49,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape9 historyTable = Shape9(
        source: i0.VersionedTable(
          entityName: 'history_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_32,
            _column_50,
            _column_51,
            _column_52,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape10 lyricsTable = Shape10(
        source: i0.VersionedTable(
          entityName: 'lyrics_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_37,
            _column_52,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    final i1.Index uniqueBlacklist = i1.Index('unique_blacklist',
        'CREATE UNIQUE INDEX unique_blacklist ON blacklist_table (element_type, element_id)');
    final i1.Index uniqTrackMatch = i1.Index('uniq_track_match',
        'CREATE UNIQUE INDEX uniq_track_match ON source_match_table (track_id, source_id, source_type)');
  }
  
  i1.GeneratedColumn<String> _column_55(String aliasedName) =>
      i1.GeneratedColumn<String>('accent_color_scheme', aliasedName, false,
          type: i1.DriftSqlType.string,
          defaultValue: const Constant("Slate:0xff64748b"));
  
  final class Schema6 extends i0.VersionedSchema {
    Schema6({required super.database}) : super(version: 6);
    @override
    late final List<i1.DatabaseSchemaEntity> entities = [
      authenticationTable,
      blacklistTable,
      preferencesTable,
      scrobblerTable,
      skipSegmentTable,
      sourceMatchTable,
      audioPlayerStateTable,
      playlistTable,
      playlistMediaTable,
      historyTable,
      lyricsTable,
      uniqueBlacklist,
      uniqTrackMatch,
    ];
    late final Shape0 authenticationTable = Shape0(
        source: i0.VersionedTable(
          entityName: 'authentication_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_1,
            _column_2,
            _column_3,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape1 blacklistTable = Shape1(
        source: i0.VersionedTable(
          entityName: 'blacklist_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_4,
            _column_5,
            _column_6,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape13 preferencesTable = Shape13(
        source: i0.VersionedTable(
          entityName: 'preferences_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_7,
            _column_8,
            _column_9,
            _column_10,
            _column_11,
            _column_12,
            _column_13,
            _column_14,
            _column_15,
            _column_55,
            _column_17,
            _column_18,
            _column_19,
            _column_20,
            _column_21,
            _column_22,
            _column_23,
            _column_24,
            _column_25,
            _column_26,
            _column_54,
            _column_27,
            _column_28,
            _column_29,
            _column_30,
            _column_31,
            _column_56,
            _column_53,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape3 scrobblerTable = Shape3(
        source: i0.VersionedTable(
          entityName: 'scrobbler_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_32,
            _column_33,
            _column_34,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape4 skipSegmentTable = Shape4(
        source: i0.VersionedTable(
          entityName: 'skip_segment_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_35,
            _column_36,
            _column_37,
            _column_32,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape5 sourceMatchTable = Shape5(
        source: i0.VersionedTable(
          entityName: 'source_match_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_37,
            _column_38,
            _column_39,
            _column_32,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape6 audioPlayerStateTable = Shape6(
        source: i0.VersionedTable(
          entityName: 'audio_player_state_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_40,
            _column_41,
            _column_42,
            _column_43,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape7 playlistTable = Shape7(
        source: i0.VersionedTable(
          entityName: 'playlist_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_44,
            _column_45,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape8 playlistMediaTable = Shape8(
        source: i0.VersionedTable(
          entityName: 'playlist_media_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_46,
            _column_47,
            _column_48,
            _column_49,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape9 historyTable = Shape9(
        source: i0.VersionedTable(
          entityName: 'history_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_32,
            _column_50,
            _column_51,
            _column_52,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape10 lyricsTable = Shape10(
        source: i0.VersionedTable(
          entityName: 'lyrics_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_37,
            _column_52,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    final i1.Index uniqueBlacklist = i1.Index('unique_blacklist',
        'CREATE UNIQUE INDEX unique_blacklist ON blacklist_table (element_type, element_id)');
    final i1.Index uniqTrackMatch = i1.Index('uniq_track_match',
        'CREATE UNIQUE INDEX uniq_track_match ON source_match_table (track_id, source_id, source_type)');
  }
  
  class Shape13 extends i0.VersionedTable {
    Shape13({required super.source, required super.alias}) : super.aliased();
    i1.GeneratedColumn<int> get id =>
        columnsByName['id']! as i1.GeneratedColumn<int>;
    i1.GeneratedColumn<String> get audioQuality =>
        columnsByName['audio_quality']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<bool> get albumColorSync =>
        columnsByName['album_color_sync']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get amoledDarkTheme =>
        columnsByName['amoled_dark_theme']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get checkUpdate =>
        columnsByName['check_update']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get normalizeAudio =>
        columnsByName['normalize_audio']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get showSystemTrayIcon =>
        columnsByName['show_system_tray_icon']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get systemTitleBar =>
        columnsByName['system_title_bar']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get skipNonMusic =>
        columnsByName['skip_non_music']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<String> get closeBehavior =>
        columnsByName['close_behavior']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get accentColorScheme =>
        columnsByName['accent_color_scheme']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get layoutMode =>
        columnsByName['layout_mode']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get locale =>
        columnsByName['locale']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get market =>
        columnsByName['market']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get searchMode =>
        columnsByName['search_mode']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get downloadLocation =>
        columnsByName['download_location']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get localLibraryLocation =>
        columnsByName['local_library_location']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get pipedInstance =>
        columnsByName['piped_instance']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get invidiousInstance =>
        columnsByName['invidious_instance']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get themeMode =>
        columnsByName['theme_mode']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get audioSource =>
        columnsByName['audio_source']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get youtubeClientEngine =>
        columnsByName['youtube_client_engine']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get streamMusicCodec =>
        columnsByName['stream_music_codec']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get downloadMusicCodec =>
        columnsByName['download_music_codec']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<bool> get discordPresence =>
        columnsByName['discord_presence']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get endlessPlayback =>
        columnsByName['endless_playback']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<bool> get enableConnect =>
        columnsByName['enable_connect']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<int> get connectPort =>
        columnsByName['connect_port']! as i1.GeneratedColumn<int>;
    i1.GeneratedColumn<bool> get cacheMusic =>
        columnsByName['cache_music']! as i1.GeneratedColumn<bool>;
  }
  
  i1.GeneratedColumn<int> _column_56(String aliasedName) =>
      i1.GeneratedColumn<int>('connect_port', aliasedName, false,
          type: i1.DriftSqlType.int, defaultValue: const Constant(-1));
  
  final class Schema7 extends i0.VersionedSchema {
    Schema7({required super.database}) : super(version: 7);
    @override
    late final List<i1.DatabaseSchemaEntity> entities = [
      authenticationTable,
      blacklistTable,
      preferencesTable,
      scrobblerTable,
      skipSegmentTable,
      sourceMatchTable,
      audioPlayerStateTable,
      historyTable,
      lyricsTable,
      metadataPluginsTable,
      uniqueBlacklist,
      uniqTrackMatch,
    ];
    late final Shape0 authenticationTable = Shape0(
        source: i0.VersionedTable(
          entityName: 'authentication_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_1,
            _column_2,
            _column_3,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape1 blacklistTable = Shape1(
        source: i0.VersionedTable(
          entityName: 'blacklist_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_4,
            _column_5,
            _column_6,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape13 preferencesTable = Shape13(
        source: i0.VersionedTable(
          entityName: 'preferences_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_7,
            _column_8,
            _column_9,
            _column_10,
            _column_11,
            _column_12,
            _column_13,
            _column_14,
            _column_15,
            _column_55,
            _column_17,
            _column_18,
            _column_19,
            _column_20,
            _column_21,
            _column_22,
            _column_23,
            _column_24,
            _column_25,
            _column_26,
            _column_54,
            _column_27,
            _column_28,
            _column_29,
            _column_30,
            _column_31,
            _column_56,
            _column_53,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape3 scrobblerTable = Shape3(
        source: i0.VersionedTable(
          entityName: 'scrobbler_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_32,
            _column_33,
            _column_34,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape4 skipSegmentTable = Shape4(
        source: i0.VersionedTable(
          entityName: 'skip_segment_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_35,
            _column_36,
            _column_37,
            _column_32,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape5 sourceMatchTable = Shape5(
        source: i0.VersionedTable(
          entityName: 'source_match_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_37,
            _column_38,
            _column_39,
            _column_32,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape14 audioPlayerStateTable = Shape14(
        source: i0.VersionedTable(
          entityName: 'audio_player_state_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_40,
            _column_41,
            _column_42,
            _column_43,
            _column_57,
            _column_58,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape9 historyTable = Shape9(
        source: i0.VersionedTable(
          entityName: 'history_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_32,
            _column_50,
            _column_51,
            _column_52,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape10 lyricsTable = Shape10(
        source: i0.VersionedTable(
          entityName: 'lyrics_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_37,
            _column_52,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape15 metadataPluginsTable = Shape15(
        source: i0.VersionedTable(
          entityName: 'metadata_plugins_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_59,
            _column_60,
            _column_61,
            _column_62,
            _column_63,
            _column_64,
            _column_65,
            _column_66,
            _column_67,
            _column_68,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    final i1.Index uniqueBlacklist = i1.Index('unique_blacklist',
        'CREATE UNIQUE INDEX unique_blacklist ON blacklist_table (element_type, element_id)');
    final i1.Index uniqTrackMatch = i1.Index('uniq_track_match',
        'CREATE UNIQUE INDEX uniq_track_match ON source_match_table (track_id, source_id, source_type)');
  }
  
  class Shape14 extends i0.VersionedTable {
    Shape14({required super.source, required super.alias}) : super.aliased();
    i1.GeneratedColumn<int> get id =>
        columnsByName['id']! as i1.GeneratedColumn<int>;
    i1.GeneratedColumn<bool> get playing =>
        columnsByName['playing']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<String> get loopMode =>
        columnsByName['loop_mode']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<bool> get shuffled =>
        columnsByName['shuffled']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<String> get collections =>
        columnsByName['collections']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get tracks =>
        columnsByName['tracks']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<int> get currentIndex =>
        columnsByName['current_index']! as i1.GeneratedColumn<int>;
  }
  
  i1.GeneratedColumn<String> _column_57(String aliasedName) =>
      i1.GeneratedColumn<String>('tracks', aliasedName, false,
          type: i1.DriftSqlType.string, defaultValue: const Constant("[]"));
  i1.GeneratedColumn<int> _column_58(String aliasedName) =>
      i1.GeneratedColumn<int>('current_index', aliasedName, false,
          type: i1.DriftSqlType.int, defaultValue: const Constant(0));
  
  class Shape15 extends i0.VersionedTable {
    Shape15({required super.source, required super.alias}) : super.aliased();
    i1.GeneratedColumn<int> get id =>
        columnsByName['id']! as i1.GeneratedColumn<int>;
    i1.GeneratedColumn<String> get name =>
        columnsByName['name']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get description =>
        columnsByName['description']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get version =>
        columnsByName['version']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get author =>
        columnsByName['author']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get entryPoint =>
        columnsByName['entry_point']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get apis =>
        columnsByName['apis']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get abilities =>
        columnsByName['abilities']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<bool> get selected =>
        columnsByName['selected']! as i1.GeneratedColumn<bool>;
    i1.GeneratedColumn<String> get repository =>
        columnsByName['repository']! as i1.GeneratedColumn<String>;
    i1.GeneratedColumn<String> get pluginApiVersion =>
        columnsByName['plugin_api_version']! as i1.GeneratedColumn<String>;
  }
  
  i1.GeneratedColumn<String> _column_59(String aliasedName) =>
      i1.GeneratedColumn<String>('name', aliasedName, false,
          additionalChecks: i1.GeneratedColumn.checkTextLength(
              minTextLength: 1, maxTextLength: 50),
          type: i1.DriftSqlType.string);
  i1.GeneratedColumn<String> _column_60(String aliasedName) =>
      i1.GeneratedColumn<String>('description', aliasedName, false,
          type: i1.DriftSqlType.string);
  i1.GeneratedColumn<String> _column_61(String aliasedName) =>
      i1.GeneratedColumn<String>('version', aliasedName, false,
          type: i1.DriftSqlType.string);
  i1.GeneratedColumn<String> _column_62(String aliasedName) =>
      i1.GeneratedColumn<String>('author', aliasedName, false,
          type: i1.DriftSqlType.string);
  i1.GeneratedColumn<String> _column_63(String aliasedName) =>
      i1.GeneratedColumn<String>('entry_point', aliasedName, false,
          type: i1.DriftSqlType.string);
  i1.GeneratedColumn<String> _column_64(String aliasedName) =>
      i1.GeneratedColumn<String>('apis', aliasedName, false,
          type: i1.DriftSqlType.string);
  i1.GeneratedColumn<String> _column_65(String aliasedName) =>
      i1.GeneratedColumn<String>('abilities', aliasedName, false,
          type: i1.DriftSqlType.string);
  i1.GeneratedColumn<bool> _column_66(String aliasedName) =>
      i1.GeneratedColumn<bool>('selected', aliasedName, false,
          type: i1.DriftSqlType.bool,
          defaultConstraints: i1.GeneratedColumn.constraintIsAlways(
              'CHECK ("selected" IN (0, 1))'),
          defaultValue: const Constant(false));
  i1.GeneratedColumn<String> _column_67(String aliasedName) =>
      i1.GeneratedColumn<String>('repository', aliasedName, true,
          type: i1.DriftSqlType.string);
  i1.GeneratedColumn<String> _column_68(String aliasedName) =>
      i1.GeneratedColumn<String>('plugin_api_version', aliasedName, false,
          type: i1.DriftSqlType.string);
  
  final class Schema8 extends i0.VersionedSchema {
    Schema8({required super.database}) : super(version: 8);
    @override
    late final List<i1.DatabaseSchemaEntity> entities = [
      authenticationTable,
      blacklistTable,
      preferencesTable,
      scrobblerTable,
      skipSegmentTable,
      sourceMatchTable,
      audioPlayerStateTable,
      historyTable,
      lyricsTable,
      metadataPluginsTable,
      uniqueBlacklist,
      uniqTrackMatch,
    ];
    late final Shape0 authenticationTable = Shape0(
        source: i0.VersionedTable(
          entityName: 'authentication_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_1,
            _column_2,
            _column_3,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape1 blacklistTable = Shape1(
        source: i0.VersionedTable(
          entityName: 'blacklist_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_4,
            _column_5,
            _column_6,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape13 preferencesTable = Shape13(
        source: i0.VersionedTable(
          entityName: 'preferences_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_7,
            _column_8,
            _column_9,
            _column_10,
            _column_11,
            _column_12,
            _column_13,
            _column_14,
            _column_15,
            _column_55,
            _column_17,
            _column_18,
            _column_19,
            _column_20,
            _column_21,
            _column_22,
            _column_23,
            _column_24,
            _column_25,
            _column_26,
            _column_54,
            _column_27,
            _column_28,
            _column_29,
            _column_30,
            _column_31,
            _column_56,
            _column_53,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape3 scrobblerTable = Shape3(
        source: i0.VersionedTable(
          entityName: 'scrobbler_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_32,
            _column_33,
            _column_34,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape4 skipSegmentTable = Shape4(
        source: i0.VersionedTable(
          entityName: 'skip_segment_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_35,
            _column_36,
            _column_37,
            _column_32,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape5 sourceMatchTable = Shape5(
        source: i0.VersionedTable(
          entityName: 'source_match_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_37,
            _column_38,
            _column_39,
            _column_32,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape14 audioPlayerStateTable = Shape14(
        source: i0.VersionedTable(
          entityName: 'audio_player_state_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_40,
            _column_41,
            _column_42,
            _column_43,
            _column_57,
            _column_58,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape9 historyTable = Shape9(
        source: i0.VersionedTable(
          entityName: 'history_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_32,
            _column_50,
            _column_51,
            _column_52,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape10 lyricsTable = Shape10(
        source: i0.VersionedTable(
          entityName: 'lyrics_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_37,
            _column_52,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    late final Shape15 metadataPluginsTable = Shape15(
        source: i0.VersionedTable(
          entityName: 'metadata_plugins_table',
          withoutRowId: false,
          isStrict: false,
          tableConstraints: [],
          columns: [
            _column_0,
            _column_59,
            _column_60,
            _column_61,
            _column_62,
            _column_63,
            _column_64,
            _column_65,
            _column_66,
            _column_67,
            _column_69,
          ],
          attachedDatabase: database,
        ),
        alias: null);
    final i1.Index uniqueBlacklist = i1.Index('unique_blacklist',
        'CREATE UNIQUE INDEX unique_blacklist ON blacklist_table (element_type, element_id)');
    final i1.Index uniqTrackMatch = i1.Index('uniq_track_match',
        'CREATE UNIQUE INDEX uniq_track_match ON source_match_table (track_id, source_id, source_type)');
  }
  
  i1.GeneratedColumn<String> _column_69(String aliasedName) =>
      i1.GeneratedColumn<String>('plugin_api_version', aliasedName, false,
          type: i1.DriftSqlType.string, defaultValue: const Constant('1.0.0'));
  i0.MigrationStepWithVersion migrationSteps({
    required Future<void> Function(i1.Migrator m, Schema2 schema) from1To2,
    required Future<void> Function(i1.Migrator m, Schema3 schema) from2To3,
    required Future<void> Function(i1.Migrator m, Schema4 schema) from3To4,
    required Future<void> Function(i1.Migrator m, Schema5 schema) from4To5,
    required Future<void> Function(i1.Migrator m, Schema6 schema) from5To6,
    required Future<void> Function(i1.Migrator m, Schema7 schema) from6To7,
    required Future<void> Function(i1.Migrator m, Schema8 schema) from7To8,
  }) {
    return (currentVersion, database) async {
      switch (currentVersion) {
        case 1:
          final schema = Schema2(database: database);
          final migrator = i1.Migrator(database, schema);
          await from1To2(migrator, schema);
          return 2;
        case 2:
          final schema = Schema3(database: database);
          final migrator = i1.Migrator(database, schema);
          await from2To3(migrator, schema);
          return 3;
        case 3:
          final schema = Schema4(database: database);
          final migrator = i1.Migrator(database, schema);
          await from3To4(migrator, schema);
          return 4;
        case 4:
          final schema = Schema5(database: database);
          final migrator = i1.Migrator(database, schema);
          await from4To5(migrator, schema);
          return 5;
        case 5:
          final schema = Schema6(database: database);
          final migrator = i1.Migrator(database, schema);
          await from5To6(migrator, schema);
          return 6;
        case 6:
          final schema = Schema7(database: database);
          final migrator = i1.Migrator(database, schema);
          await from6To7(migrator, schema);
          return 7;
        case 7:
          final schema = Schema8(database: database);
          final migrator = i1.Migrator(database, schema);
          await from7To8(migrator, schema);
          return 8;
        default:
          throw ArgumentError.value('Unknown migration from $currentVersion');
      }
    };
  }
  
  i1.OnUpgrade stepByStep({
    required Future<void> Function(i1.Migrator m, Schema2 schema) from1To2,
    required Future<void> Function(i1.Migrator m, Schema3 schema) from2To3,
    required Future<void> Function(i1.Migrator m, Schema4 schema) from3To4,
    required Future<void> Function(i1.Migrator m, Schema5 schema) from4To5,
    required Future<void> Function(i1.Migrator m, Schema6 schema) from5To6,
    required Future<void> Function(i1.Migrator m, Schema7 schema) from6To7,
    required Future<void> Function(i1.Migrator m, Schema8 schema) from7To8,
  }) =>
      i0.VersionedSchema.stepByStepHelper(
          step: migrationSteps(
        from1To2: from1To2,
        from2To3: from2To3,
        from3To4: from3To4,
        from4To5: from4To5,
        from5To6: from5To6,
        from6To7: from6To7,
        from7To8: from7To8,
      ));
  