subtracks/lib/database/database.g.dart
austinried f0f812e66a v2
2023-04-28 12:26:02 +09:00

5548 lines
197 KiB
Dart

// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'database.dart';
// ignore_for_file: type=lint
class Queue extends Table with TableInfo<Queue, QueueData> {
@override
final GeneratedDatabase attachedDatabase;
final String? _alias;
Queue(this.attachedDatabase, [this._alias]);
static const VerificationMeta _indexMeta = const VerificationMeta('index');
late final GeneratedColumn<int> index = GeneratedColumn<int>(
'index', aliasedName, false,
type: DriftSqlType.int,
requiredDuringInsert: false,
$customConstraints: 'NOT NULL PRIMARY KEY UNIQUE');
static const VerificationMeta _sourceIdMeta =
const VerificationMeta('sourceId');
late final GeneratedColumn<int> sourceId = GeneratedColumn<int>(
'source_id', aliasedName, false,
type: DriftSqlType.int,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL');
static const VerificationMeta _idMeta = const VerificationMeta('id');
late final GeneratedColumn<String> id = GeneratedColumn<String>(
'id', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL');
static const VerificationMeta _contextMeta =
const VerificationMeta('context');
late final GeneratedColumnWithTypeConverter<QueueContextType, String>
context = GeneratedColumn<String>('context', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL')
.withConverter<QueueContextType>(Queue.$convertercontext);
static const VerificationMeta _contextIdMeta =
const VerificationMeta('contextId');
late final GeneratedColumn<String> contextId = GeneratedColumn<String>(
'context_id', aliasedName, true,
type: DriftSqlType.string,
requiredDuringInsert: false,
$customConstraints: '');
static const VerificationMeta _currentTrackMeta =
const VerificationMeta('currentTrack');
late final GeneratedColumn<bool> currentTrack = GeneratedColumn<bool>(
'current_track', aliasedName, true,
type: DriftSqlType.bool,
requiredDuringInsert: false,
$customConstraints: 'UNIQUE');
@override
List<GeneratedColumn> get $columns =>
[index, sourceId, id, context, contextId, currentTrack];
@override
String get aliasedName => _alias ?? 'queue';
@override
String get actualTableName => 'queue';
@override
VerificationContext validateIntegrity(Insertable<QueueData> instance,
{bool isInserting = false}) {
final context = VerificationContext();
final data = instance.toColumns(true);
if (data.containsKey('index')) {
context.handle(
_indexMeta, index.isAcceptableOrUnknown(data['index']!, _indexMeta));
}
if (data.containsKey('source_id')) {
context.handle(_sourceIdMeta,
sourceId.isAcceptableOrUnknown(data['source_id']!, _sourceIdMeta));
} else if (isInserting) {
context.missing(_sourceIdMeta);
}
if (data.containsKey('id')) {
context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta));
} else if (isInserting) {
context.missing(_idMeta);
}
context.handle(_contextMeta, const VerificationResult.success());
if (data.containsKey('context_id')) {
context.handle(_contextIdMeta,
contextId.isAcceptableOrUnknown(data['context_id']!, _contextIdMeta));
}
if (data.containsKey('current_track')) {
context.handle(
_currentTrackMeta,
currentTrack.isAcceptableOrUnknown(
data['current_track']!, _currentTrackMeta));
}
return context;
}
@override
Set<GeneratedColumn> get $primaryKey => {index};
@override
QueueData map(Map<String, dynamic> data, {String? tablePrefix}) {
final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : '';
return QueueData(
index: attachedDatabase.typeMapping
.read(DriftSqlType.int, data['${effectivePrefix}index'])!,
sourceId: attachedDatabase.typeMapping
.read(DriftSqlType.int, data['${effectivePrefix}source_id'])!,
id: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}id'])!,
context: Queue.$convertercontext.fromSql(attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}context'])!),
contextId: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}context_id']),
currentTrack: attachedDatabase.typeMapping
.read(DriftSqlType.bool, data['${effectivePrefix}current_track']),
);
}
@override
Queue createAlias(String alias) {
return Queue(attachedDatabase, alias);
}
static JsonTypeConverter2<QueueContextType, String, String>
$convertercontext =
const EnumNameConverter<QueueContextType>(QueueContextType.values);
@override
bool get dontWriteConstraints => true;
}
class QueueData extends DataClass implements Insertable<QueueData> {
final int index;
final int sourceId;
final String id;
final QueueContextType context;
final String? contextId;
final bool? currentTrack;
const QueueData(
{required this.index,
required this.sourceId,
required this.id,
required this.context,
this.contextId,
this.currentTrack});
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
map['index'] = Variable<int>(index);
map['source_id'] = Variable<int>(sourceId);
map['id'] = Variable<String>(id);
{
final converter = Queue.$convertercontext;
map['context'] = Variable<String>(converter.toSql(context));
}
if (!nullToAbsent || contextId != null) {
map['context_id'] = Variable<String>(contextId);
}
if (!nullToAbsent || currentTrack != null) {
map['current_track'] = Variable<bool>(currentTrack);
}
return map;
}
QueueCompanion toCompanion(bool nullToAbsent) {
return QueueCompanion(
index: Value(index),
sourceId: Value(sourceId),
id: Value(id),
context: Value(context),
contextId: contextId == null && nullToAbsent
? const Value.absent()
: Value(contextId),
currentTrack: currentTrack == null && nullToAbsent
? const Value.absent()
: Value(currentTrack),
);
}
factory QueueData.fromJson(Map<String, dynamic> json,
{ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return QueueData(
index: serializer.fromJson<int>(json['index']),
sourceId: serializer.fromJson<int>(json['source_id']),
id: serializer.fromJson<String>(json['id']),
context: Queue.$convertercontext
.fromJson(serializer.fromJson<String>(json['context'])),
contextId: serializer.fromJson<String?>(json['context_id']),
currentTrack: serializer.fromJson<bool?>(json['current_track']),
);
}
@override
Map<String, dynamic> toJson({ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return <String, dynamic>{
'index': serializer.toJson<int>(index),
'source_id': serializer.toJson<int>(sourceId),
'id': serializer.toJson<String>(id),
'context':
serializer.toJson<String>(Queue.$convertercontext.toJson(context)),
'context_id': serializer.toJson<String?>(contextId),
'current_track': serializer.toJson<bool?>(currentTrack),
};
}
QueueData copyWith(
{int? index,
int? sourceId,
String? id,
QueueContextType? context,
Value<String?> contextId = const Value.absent(),
Value<bool?> currentTrack = const Value.absent()}) =>
QueueData(
index: index ?? this.index,
sourceId: sourceId ?? this.sourceId,
id: id ?? this.id,
context: context ?? this.context,
contextId: contextId.present ? contextId.value : this.contextId,
currentTrack:
currentTrack.present ? currentTrack.value : this.currentTrack,
);
@override
String toString() {
return (StringBuffer('QueueData(')
..write('index: $index, ')
..write('sourceId: $sourceId, ')
..write('id: $id, ')
..write('context: $context, ')
..write('contextId: $contextId, ')
..write('currentTrack: $currentTrack')
..write(')'))
.toString();
}
@override
int get hashCode =>
Object.hash(index, sourceId, id, context, contextId, currentTrack);
@override
bool operator ==(Object other) =>
identical(this, other) ||
(other is QueueData &&
other.index == this.index &&
other.sourceId == this.sourceId &&
other.id == this.id &&
other.context == this.context &&
other.contextId == this.contextId &&
other.currentTrack == this.currentTrack);
}
class QueueCompanion extends UpdateCompanion<QueueData> {
final Value<int> index;
final Value<int> sourceId;
final Value<String> id;
final Value<QueueContextType> context;
final Value<String?> contextId;
final Value<bool?> currentTrack;
const QueueCompanion({
this.index = const Value.absent(),
this.sourceId = const Value.absent(),
this.id = const Value.absent(),
this.context = const Value.absent(),
this.contextId = const Value.absent(),
this.currentTrack = const Value.absent(),
});
QueueCompanion.insert({
this.index = const Value.absent(),
required int sourceId,
required String id,
required QueueContextType context,
this.contextId = const Value.absent(),
this.currentTrack = const Value.absent(),
}) : sourceId = Value(sourceId),
id = Value(id),
context = Value(context);
static Insertable<QueueData> custom({
Expression<int>? index,
Expression<int>? sourceId,
Expression<String>? id,
Expression<String>? context,
Expression<String>? contextId,
Expression<bool>? currentTrack,
}) {
return RawValuesInsertable({
if (index != null) 'index': index,
if (sourceId != null) 'source_id': sourceId,
if (id != null) 'id': id,
if (context != null) 'context': context,
if (contextId != null) 'context_id': contextId,
if (currentTrack != null) 'current_track': currentTrack,
});
}
QueueCompanion copyWith(
{Value<int>? index,
Value<int>? sourceId,
Value<String>? id,
Value<QueueContextType>? context,
Value<String?>? contextId,
Value<bool?>? currentTrack}) {
return QueueCompanion(
index: index ?? this.index,
sourceId: sourceId ?? this.sourceId,
id: id ?? this.id,
context: context ?? this.context,
contextId: contextId ?? this.contextId,
currentTrack: currentTrack ?? this.currentTrack,
);
}
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
if (index.present) {
map['index'] = Variable<int>(index.value);
}
if (sourceId.present) {
map['source_id'] = Variable<int>(sourceId.value);
}
if (id.present) {
map['id'] = Variable<String>(id.value);
}
if (context.present) {
final converter = Queue.$convertercontext;
map['context'] = Variable<String>(converter.toSql(context.value));
}
if (contextId.present) {
map['context_id'] = Variable<String>(contextId.value);
}
if (currentTrack.present) {
map['current_track'] = Variable<bool>(currentTrack.value);
}
return map;
}
@override
String toString() {
return (StringBuffer('QueueCompanion(')
..write('index: $index, ')
..write('sourceId: $sourceId, ')
..write('id: $id, ')
..write('context: $context, ')
..write('contextId: $contextId, ')
..write('currentTrack: $currentTrack')
..write(')'))
.toString();
}
}
class LastAudioState extends Table
with TableInfo<LastAudioState, LastAudioStateData> {
@override
final GeneratedDatabase attachedDatabase;
final String? _alias;
LastAudioState(this.attachedDatabase, [this._alias]);
static const VerificationMeta _idMeta = const VerificationMeta('id');
late final GeneratedColumn<int> id = GeneratedColumn<int>(
'id', aliasedName, false,
type: DriftSqlType.int,
requiredDuringInsert: false,
$customConstraints: 'NOT NULL PRIMARY KEY');
static const VerificationMeta _queueModeMeta =
const VerificationMeta('queueMode');
late final GeneratedColumnWithTypeConverter<QueueMode, int> queueMode =
GeneratedColumn<int>('queue_mode', aliasedName, false,
type: DriftSqlType.int,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL')
.withConverter<QueueMode>(LastAudioState.$converterqueueMode);
static const VerificationMeta _shuffleIndiciesMeta =
const VerificationMeta('shuffleIndicies');
late final GeneratedColumnWithTypeConverter<IList<int>?, String>
shuffleIndicies = GeneratedColumn<String>(
'shuffle_indicies', aliasedName, true,
type: DriftSqlType.string,
requiredDuringInsert: false,
$customConstraints: '')
.withConverter<IList<int>?>(
LastAudioState.$convertershuffleIndiciesn);
static const VerificationMeta _repeatMeta = const VerificationMeta('repeat');
late final GeneratedColumnWithTypeConverter<RepeatMode, int> repeat =
GeneratedColumn<int>('repeat', aliasedName, false,
type: DriftSqlType.int,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL')
.withConverter<RepeatMode>(LastAudioState.$converterrepeat);
@override
List<GeneratedColumn> get $columns =>
[id, queueMode, shuffleIndicies, repeat];
@override
String get aliasedName => _alias ?? 'last_audio_state';
@override
String get actualTableName => 'last_audio_state';
@override
VerificationContext validateIntegrity(Insertable<LastAudioStateData> instance,
{bool isInserting = false}) {
final context = VerificationContext();
final data = instance.toColumns(true);
if (data.containsKey('id')) {
context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta));
}
context.handle(_queueModeMeta, const VerificationResult.success());
context.handle(_shuffleIndiciesMeta, const VerificationResult.success());
context.handle(_repeatMeta, const VerificationResult.success());
return context;
}
@override
Set<GeneratedColumn> get $primaryKey => {id};
@override
LastAudioStateData map(Map<String, dynamic> data, {String? tablePrefix}) {
final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : '';
return LastAudioStateData(
id: attachedDatabase.typeMapping
.read(DriftSqlType.int, data['${effectivePrefix}id'])!,
queueMode: LastAudioState.$converterqueueMode.fromSql(attachedDatabase
.typeMapping
.read(DriftSqlType.int, data['${effectivePrefix}queue_mode'])!),
shuffleIndicies: LastAudioState.$convertershuffleIndiciesn.fromSql(
attachedDatabase.typeMapping.read(
DriftSqlType.string, data['${effectivePrefix}shuffle_indicies'])),
repeat: LastAudioState.$converterrepeat.fromSql(attachedDatabase
.typeMapping
.read(DriftSqlType.int, data['${effectivePrefix}repeat'])!),
);
}
@override
LastAudioState createAlias(String alias) {
return LastAudioState(attachedDatabase, alias);
}
static JsonTypeConverter2<QueueMode, int, int> $converterqueueMode =
const EnumIndexConverter<QueueMode>(QueueMode.values);
static TypeConverter<IList<int>, String> $convertershuffleIndicies =
const IListIntConverter();
static TypeConverter<IList<int>?, String?> $convertershuffleIndiciesn =
NullAwareTypeConverter.wrap($convertershuffleIndicies);
static JsonTypeConverter2<RepeatMode, int, int> $converterrepeat =
const EnumIndexConverter<RepeatMode>(RepeatMode.values);
@override
bool get dontWriteConstraints => true;
}
class LastAudioStateData extends DataClass
implements Insertable<LastAudioStateData> {
final int id;
final QueueMode queueMode;
final IList<int>? shuffleIndicies;
final RepeatMode repeat;
const LastAudioStateData(
{required this.id,
required this.queueMode,
this.shuffleIndicies,
required this.repeat});
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
map['id'] = Variable<int>(id);
{
final converter = LastAudioState.$converterqueueMode;
map['queue_mode'] = Variable<int>(converter.toSql(queueMode));
}
if (!nullToAbsent || shuffleIndicies != null) {
final converter = LastAudioState.$convertershuffleIndiciesn;
map['shuffle_indicies'] =
Variable<String>(converter.toSql(shuffleIndicies));
}
{
final converter = LastAudioState.$converterrepeat;
map['repeat'] = Variable<int>(converter.toSql(repeat));
}
return map;
}
LastAudioStateCompanion toCompanion(bool nullToAbsent) {
return LastAudioStateCompanion(
id: Value(id),
queueMode: Value(queueMode),
shuffleIndicies: shuffleIndicies == null && nullToAbsent
? const Value.absent()
: Value(shuffleIndicies),
repeat: Value(repeat),
);
}
factory LastAudioStateData.fromJson(Map<String, dynamic> json,
{ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return LastAudioStateData(
id: serializer.fromJson<int>(json['id']),
queueMode: LastAudioState.$converterqueueMode
.fromJson(serializer.fromJson<int>(json['queue_mode'])),
shuffleIndicies:
serializer.fromJson<IList<int>?>(json['shuffle_indicies']),
repeat: LastAudioState.$converterrepeat
.fromJson(serializer.fromJson<int>(json['repeat'])),
);
}
@override
Map<String, dynamic> toJson({ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return <String, dynamic>{
'id': serializer.toJson<int>(id),
'queue_mode': serializer
.toJson<int>(LastAudioState.$converterqueueMode.toJson(queueMode)),
'shuffle_indicies': serializer.toJson<IList<int>?>(shuffleIndicies),
'repeat': serializer
.toJson<int>(LastAudioState.$converterrepeat.toJson(repeat)),
};
}
LastAudioStateData copyWith(
{int? id,
QueueMode? queueMode,
Value<IList<int>?> shuffleIndicies = const Value.absent(),
RepeatMode? repeat}) =>
LastAudioStateData(
id: id ?? this.id,
queueMode: queueMode ?? this.queueMode,
shuffleIndicies: shuffleIndicies.present
? shuffleIndicies.value
: this.shuffleIndicies,
repeat: repeat ?? this.repeat,
);
@override
String toString() {
return (StringBuffer('LastAudioStateData(')
..write('id: $id, ')
..write('queueMode: $queueMode, ')
..write('shuffleIndicies: $shuffleIndicies, ')
..write('repeat: $repeat')
..write(')'))
.toString();
}
@override
int get hashCode => Object.hash(id, queueMode, shuffleIndicies, repeat);
@override
bool operator ==(Object other) =>
identical(this, other) ||
(other is LastAudioStateData &&
other.id == this.id &&
other.queueMode == this.queueMode &&
other.shuffleIndicies == this.shuffleIndicies &&
other.repeat == this.repeat);
}
class LastAudioStateCompanion extends UpdateCompanion<LastAudioStateData> {
final Value<int> id;
final Value<QueueMode> queueMode;
final Value<IList<int>?> shuffleIndicies;
final Value<RepeatMode> repeat;
const LastAudioStateCompanion({
this.id = const Value.absent(),
this.queueMode = const Value.absent(),
this.shuffleIndicies = const Value.absent(),
this.repeat = const Value.absent(),
});
LastAudioStateCompanion.insert({
this.id = const Value.absent(),
required QueueMode queueMode,
this.shuffleIndicies = const Value.absent(),
required RepeatMode repeat,
}) : queueMode = Value(queueMode),
repeat = Value(repeat);
static Insertable<LastAudioStateData> custom({
Expression<int>? id,
Expression<int>? queueMode,
Expression<String>? shuffleIndicies,
Expression<int>? repeat,
}) {
return RawValuesInsertable({
if (id != null) 'id': id,
if (queueMode != null) 'queue_mode': queueMode,
if (shuffleIndicies != null) 'shuffle_indicies': shuffleIndicies,
if (repeat != null) 'repeat': repeat,
});
}
LastAudioStateCompanion copyWith(
{Value<int>? id,
Value<QueueMode>? queueMode,
Value<IList<int>?>? shuffleIndicies,
Value<RepeatMode>? repeat}) {
return LastAudioStateCompanion(
id: id ?? this.id,
queueMode: queueMode ?? this.queueMode,
shuffleIndicies: shuffleIndicies ?? this.shuffleIndicies,
repeat: repeat ?? this.repeat,
);
}
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
if (id.present) {
map['id'] = Variable<int>(id.value);
}
if (queueMode.present) {
final converter = LastAudioState.$converterqueueMode;
map['queue_mode'] = Variable<int>(converter.toSql(queueMode.value));
}
if (shuffleIndicies.present) {
final converter = LastAudioState.$convertershuffleIndiciesn;
map['shuffle_indicies'] =
Variable<String>(converter.toSql(shuffleIndicies.value));
}
if (repeat.present) {
final converter = LastAudioState.$converterrepeat;
map['repeat'] = Variable<int>(converter.toSql(repeat.value));
}
return map;
}
@override
String toString() {
return (StringBuffer('LastAudioStateCompanion(')
..write('id: $id, ')
..write('queueMode: $queueMode, ')
..write('shuffleIndicies: $shuffleIndicies, ')
..write('repeat: $repeat')
..write(')'))
.toString();
}
}
class LastBottomNavState extends Table
with TableInfo<LastBottomNavState, LastBottomNavStateData> {
@override
final GeneratedDatabase attachedDatabase;
final String? _alias;
LastBottomNavState(this.attachedDatabase, [this._alias]);
static const VerificationMeta _idMeta = const VerificationMeta('id');
late final GeneratedColumn<int> id = GeneratedColumn<int>(
'id', aliasedName, false,
type: DriftSqlType.int,
requiredDuringInsert: false,
$customConstraints: 'NOT NULL PRIMARY KEY');
static const VerificationMeta _tabMeta = const VerificationMeta('tab');
late final GeneratedColumn<String> tab = GeneratedColumn<String>(
'tab', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL');
@override
List<GeneratedColumn> get $columns => [id, tab];
@override
String get aliasedName => _alias ?? 'last_bottom_nav_state';
@override
String get actualTableName => 'last_bottom_nav_state';
@override
VerificationContext validateIntegrity(
Insertable<LastBottomNavStateData> instance,
{bool isInserting = false}) {
final context = VerificationContext();
final data = instance.toColumns(true);
if (data.containsKey('id')) {
context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta));
}
if (data.containsKey('tab')) {
context.handle(
_tabMeta, tab.isAcceptableOrUnknown(data['tab']!, _tabMeta));
} else if (isInserting) {
context.missing(_tabMeta);
}
return context;
}
@override
Set<GeneratedColumn> get $primaryKey => {id};
@override
LastBottomNavStateData map(Map<String, dynamic> data, {String? tablePrefix}) {
final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : '';
return LastBottomNavStateData(
id: attachedDatabase.typeMapping
.read(DriftSqlType.int, data['${effectivePrefix}id'])!,
tab: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}tab'])!,
);
}
@override
LastBottomNavState createAlias(String alias) {
return LastBottomNavState(attachedDatabase, alias);
}
@override
bool get dontWriteConstraints => true;
}
class LastBottomNavStateData extends DataClass
implements Insertable<LastBottomNavStateData> {
final int id;
final String tab;
const LastBottomNavStateData({required this.id, required this.tab});
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
map['id'] = Variable<int>(id);
map['tab'] = Variable<String>(tab);
return map;
}
LastBottomNavStateCompanion toCompanion(bool nullToAbsent) {
return LastBottomNavStateCompanion(
id: Value(id),
tab: Value(tab),
);
}
factory LastBottomNavStateData.fromJson(Map<String, dynamic> json,
{ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return LastBottomNavStateData(
id: serializer.fromJson<int>(json['id']),
tab: serializer.fromJson<String>(json['tab']),
);
}
@override
Map<String, dynamic> toJson({ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return <String, dynamic>{
'id': serializer.toJson<int>(id),
'tab': serializer.toJson<String>(tab),
};
}
LastBottomNavStateData copyWith({int? id, String? tab}) =>
LastBottomNavStateData(
id: id ?? this.id,
tab: tab ?? this.tab,
);
@override
String toString() {
return (StringBuffer('LastBottomNavStateData(')
..write('id: $id, ')
..write('tab: $tab')
..write(')'))
.toString();
}
@override
int get hashCode => Object.hash(id, tab);
@override
bool operator ==(Object other) =>
identical(this, other) ||
(other is LastBottomNavStateData &&
other.id == this.id &&
other.tab == this.tab);
}
class LastBottomNavStateCompanion
extends UpdateCompanion<LastBottomNavStateData> {
final Value<int> id;
final Value<String> tab;
const LastBottomNavStateCompanion({
this.id = const Value.absent(),
this.tab = const Value.absent(),
});
LastBottomNavStateCompanion.insert({
this.id = const Value.absent(),
required String tab,
}) : tab = Value(tab);
static Insertable<LastBottomNavStateData> custom({
Expression<int>? id,
Expression<String>? tab,
}) {
return RawValuesInsertable({
if (id != null) 'id': id,
if (tab != null) 'tab': tab,
});
}
LastBottomNavStateCompanion copyWith({Value<int>? id, Value<String>? tab}) {
return LastBottomNavStateCompanion(
id: id ?? this.id,
tab: tab ?? this.tab,
);
}
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
if (id.present) {
map['id'] = Variable<int>(id.value);
}
if (tab.present) {
map['tab'] = Variable<String>(tab.value);
}
return map;
}
@override
String toString() {
return (StringBuffer('LastBottomNavStateCompanion(')
..write('id: $id, ')
..write('tab: $tab')
..write(')'))
.toString();
}
}
class LastLibraryState extends Table
with TableInfo<LastLibraryState, LastLibraryStateData> {
@override
final GeneratedDatabase attachedDatabase;
final String? _alias;
LastLibraryState(this.attachedDatabase, [this._alias]);
static const VerificationMeta _idMeta = const VerificationMeta('id');
late final GeneratedColumn<int> id = GeneratedColumn<int>(
'id', aliasedName, false,
type: DriftSqlType.int,
requiredDuringInsert: false,
$customConstraints: 'NOT NULL PRIMARY KEY');
static const VerificationMeta _tabMeta = const VerificationMeta('tab');
late final GeneratedColumn<String> tab = GeneratedColumn<String>(
'tab', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL');
static const VerificationMeta _albumsListMeta =
const VerificationMeta('albumsList');
late final GeneratedColumnWithTypeConverter<ListQuery, String> albumsList =
GeneratedColumn<String>('albums_list', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL')
.withConverter<ListQuery>(LastLibraryState.$converteralbumsList);
static const VerificationMeta _artistsListMeta =
const VerificationMeta('artistsList');
late final GeneratedColumnWithTypeConverter<ListQuery, String> artistsList =
GeneratedColumn<String>('artists_list', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL')
.withConverter<ListQuery>(LastLibraryState.$converterartistsList);
static const VerificationMeta _playlistsListMeta =
const VerificationMeta('playlistsList');
late final GeneratedColumnWithTypeConverter<ListQuery, String> playlistsList =
GeneratedColumn<String>('playlists_list', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL')
.withConverter<ListQuery>(LastLibraryState.$converterplaylistsList);
static const VerificationMeta _songsListMeta =
const VerificationMeta('songsList');
late final GeneratedColumnWithTypeConverter<ListQuery, String> songsList =
GeneratedColumn<String>('songs_list', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL')
.withConverter<ListQuery>(LastLibraryState.$convertersongsList);
@override
List<GeneratedColumn> get $columns =>
[id, tab, albumsList, artistsList, playlistsList, songsList];
@override
String get aliasedName => _alias ?? 'last_library_state';
@override
String get actualTableName => 'last_library_state';
@override
VerificationContext validateIntegrity(
Insertable<LastLibraryStateData> instance,
{bool isInserting = false}) {
final context = VerificationContext();
final data = instance.toColumns(true);
if (data.containsKey('id')) {
context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta));
}
if (data.containsKey('tab')) {
context.handle(
_tabMeta, tab.isAcceptableOrUnknown(data['tab']!, _tabMeta));
} else if (isInserting) {
context.missing(_tabMeta);
}
context.handle(_albumsListMeta, const VerificationResult.success());
context.handle(_artistsListMeta, const VerificationResult.success());
context.handle(_playlistsListMeta, const VerificationResult.success());
context.handle(_songsListMeta, const VerificationResult.success());
return context;
}
@override
Set<GeneratedColumn> get $primaryKey => {id};
@override
LastLibraryStateData map(Map<String, dynamic> data, {String? tablePrefix}) {
final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : '';
return LastLibraryStateData(
id: attachedDatabase.typeMapping
.read(DriftSqlType.int, data['${effectivePrefix}id'])!,
tab: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}tab'])!,
albumsList: LastLibraryState.$converteralbumsList.fromSql(attachedDatabase
.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}albums_list'])!),
artistsList: LastLibraryState.$converterartistsList.fromSql(
attachedDatabase.typeMapping.read(
DriftSqlType.string, data['${effectivePrefix}artists_list'])!),
playlistsList: LastLibraryState.$converterplaylistsList.fromSql(
attachedDatabase.typeMapping.read(
DriftSqlType.string, data['${effectivePrefix}playlists_list'])!),
songsList: LastLibraryState.$convertersongsList.fromSql(attachedDatabase
.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}songs_list'])!),
);
}
@override
LastLibraryState createAlias(String alias) {
return LastLibraryState(attachedDatabase, alias);
}
static TypeConverter<ListQuery, String> $converteralbumsList =
const ListQueryConverter();
static TypeConverter<ListQuery, String> $converterartistsList =
const ListQueryConverter();
static TypeConverter<ListQuery, String> $converterplaylistsList =
const ListQueryConverter();
static TypeConverter<ListQuery, String> $convertersongsList =
const ListQueryConverter();
@override
bool get dontWriteConstraints => true;
}
class LastLibraryStateData extends DataClass
implements Insertable<LastLibraryStateData> {
final int id;
final String tab;
final ListQuery albumsList;
final ListQuery artistsList;
final ListQuery playlistsList;
final ListQuery songsList;
const LastLibraryStateData(
{required this.id,
required this.tab,
required this.albumsList,
required this.artistsList,
required this.playlistsList,
required this.songsList});
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
map['id'] = Variable<int>(id);
map['tab'] = Variable<String>(tab);
{
final converter = LastLibraryState.$converteralbumsList;
map['albums_list'] = Variable<String>(converter.toSql(albumsList));
}
{
final converter = LastLibraryState.$converterartistsList;
map['artists_list'] = Variable<String>(converter.toSql(artistsList));
}
{
final converter = LastLibraryState.$converterplaylistsList;
map['playlists_list'] = Variable<String>(converter.toSql(playlistsList));
}
{
final converter = LastLibraryState.$convertersongsList;
map['songs_list'] = Variable<String>(converter.toSql(songsList));
}
return map;
}
LastLibraryStateCompanion toCompanion(bool nullToAbsent) {
return LastLibraryStateCompanion(
id: Value(id),
tab: Value(tab),
albumsList: Value(albumsList),
artistsList: Value(artistsList),
playlistsList: Value(playlistsList),
songsList: Value(songsList),
);
}
factory LastLibraryStateData.fromJson(Map<String, dynamic> json,
{ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return LastLibraryStateData(
id: serializer.fromJson<int>(json['id']),
tab: serializer.fromJson<String>(json['tab']),
albumsList: serializer.fromJson<ListQuery>(json['albums_list']),
artistsList: serializer.fromJson<ListQuery>(json['artists_list']),
playlistsList: serializer.fromJson<ListQuery>(json['playlists_list']),
songsList: serializer.fromJson<ListQuery>(json['songs_list']),
);
}
@override
Map<String, dynamic> toJson({ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return <String, dynamic>{
'id': serializer.toJson<int>(id),
'tab': serializer.toJson<String>(tab),
'albums_list': serializer.toJson<ListQuery>(albumsList),
'artists_list': serializer.toJson<ListQuery>(artistsList),
'playlists_list': serializer.toJson<ListQuery>(playlistsList),
'songs_list': serializer.toJson<ListQuery>(songsList),
};
}
LastLibraryStateData copyWith(
{int? id,
String? tab,
ListQuery? albumsList,
ListQuery? artistsList,
ListQuery? playlistsList,
ListQuery? songsList}) =>
LastLibraryStateData(
id: id ?? this.id,
tab: tab ?? this.tab,
albumsList: albumsList ?? this.albumsList,
artistsList: artistsList ?? this.artistsList,
playlistsList: playlistsList ?? this.playlistsList,
songsList: songsList ?? this.songsList,
);
@override
String toString() {
return (StringBuffer('LastLibraryStateData(')
..write('id: $id, ')
..write('tab: $tab, ')
..write('albumsList: $albumsList, ')
..write('artistsList: $artistsList, ')
..write('playlistsList: $playlistsList, ')
..write('songsList: $songsList')
..write(')'))
.toString();
}
@override
int get hashCode =>
Object.hash(id, tab, albumsList, artistsList, playlistsList, songsList);
@override
bool operator ==(Object other) =>
identical(this, other) ||
(other is LastLibraryStateData &&
other.id == this.id &&
other.tab == this.tab &&
other.albumsList == this.albumsList &&
other.artistsList == this.artistsList &&
other.playlistsList == this.playlistsList &&
other.songsList == this.songsList);
}
class LastLibraryStateCompanion extends UpdateCompanion<LastLibraryStateData> {
final Value<int> id;
final Value<String> tab;
final Value<ListQuery> albumsList;
final Value<ListQuery> artistsList;
final Value<ListQuery> playlistsList;
final Value<ListQuery> songsList;
const LastLibraryStateCompanion({
this.id = const Value.absent(),
this.tab = const Value.absent(),
this.albumsList = const Value.absent(),
this.artistsList = const Value.absent(),
this.playlistsList = const Value.absent(),
this.songsList = const Value.absent(),
});
LastLibraryStateCompanion.insert({
this.id = const Value.absent(),
required String tab,
required ListQuery albumsList,
required ListQuery artistsList,
required ListQuery playlistsList,
required ListQuery songsList,
}) : tab = Value(tab),
albumsList = Value(albumsList),
artistsList = Value(artistsList),
playlistsList = Value(playlistsList),
songsList = Value(songsList);
static Insertable<LastLibraryStateData> custom({
Expression<int>? id,
Expression<String>? tab,
Expression<String>? albumsList,
Expression<String>? artistsList,
Expression<String>? playlistsList,
Expression<String>? songsList,
}) {
return RawValuesInsertable({
if (id != null) 'id': id,
if (tab != null) 'tab': tab,
if (albumsList != null) 'albums_list': albumsList,
if (artistsList != null) 'artists_list': artistsList,
if (playlistsList != null) 'playlists_list': playlistsList,
if (songsList != null) 'songs_list': songsList,
});
}
LastLibraryStateCompanion copyWith(
{Value<int>? id,
Value<String>? tab,
Value<ListQuery>? albumsList,
Value<ListQuery>? artistsList,
Value<ListQuery>? playlistsList,
Value<ListQuery>? songsList}) {
return LastLibraryStateCompanion(
id: id ?? this.id,
tab: tab ?? this.tab,
albumsList: albumsList ?? this.albumsList,
artistsList: artistsList ?? this.artistsList,
playlistsList: playlistsList ?? this.playlistsList,
songsList: songsList ?? this.songsList,
);
}
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
if (id.present) {
map['id'] = Variable<int>(id.value);
}
if (tab.present) {
map['tab'] = Variable<String>(tab.value);
}
if (albumsList.present) {
final converter = LastLibraryState.$converteralbumsList;
map['albums_list'] = Variable<String>(converter.toSql(albumsList.value));
}
if (artistsList.present) {
final converter = LastLibraryState.$converterartistsList;
map['artists_list'] =
Variable<String>(converter.toSql(artistsList.value));
}
if (playlistsList.present) {
final converter = LastLibraryState.$converterplaylistsList;
map['playlists_list'] =
Variable<String>(converter.toSql(playlistsList.value));
}
if (songsList.present) {
final converter = LastLibraryState.$convertersongsList;
map['songs_list'] = Variable<String>(converter.toSql(songsList.value));
}
return map;
}
@override
String toString() {
return (StringBuffer('LastLibraryStateCompanion(')
..write('id: $id, ')
..write('tab: $tab, ')
..write('albumsList: $albumsList, ')
..write('artistsList: $artistsList, ')
..write('playlistsList: $playlistsList, ')
..write('songsList: $songsList')
..write(')'))
.toString();
}
}
class AppSettingsTable extends Table
with TableInfo<AppSettingsTable, AppSettings> {
@override
final GeneratedDatabase attachedDatabase;
final String? _alias;
AppSettingsTable(this.attachedDatabase, [this._alias]);
static const VerificationMeta _idMeta = const VerificationMeta('id');
late final GeneratedColumn<int> id = GeneratedColumn<int>(
'id', aliasedName, false,
type: DriftSqlType.int,
requiredDuringInsert: false,
$customConstraints: 'NOT NULL PRIMARY KEY');
static const VerificationMeta _maxBitrateWifiMeta =
const VerificationMeta('maxBitrateWifi');
late final GeneratedColumn<int> maxBitrateWifi = GeneratedColumn<int>(
'max_bitrate_wifi', aliasedName, false,
type: DriftSqlType.int,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL');
static const VerificationMeta _maxBitrateMobileMeta =
const VerificationMeta('maxBitrateMobile');
late final GeneratedColumn<int> maxBitrateMobile = GeneratedColumn<int>(
'max_bitrate_mobile', aliasedName, false,
type: DriftSqlType.int,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL');
static const VerificationMeta _streamFormatMeta =
const VerificationMeta('streamFormat');
late final GeneratedColumn<String> streamFormat = GeneratedColumn<String>(
'stream_format', aliasedName, true,
type: DriftSqlType.string,
requiredDuringInsert: false,
$customConstraints: '');
@override
List<GeneratedColumn> get $columns =>
[id, maxBitrateWifi, maxBitrateMobile, streamFormat];
@override
String get aliasedName => _alias ?? 'app_settings';
@override
String get actualTableName => 'app_settings';
@override
VerificationContext validateIntegrity(Insertable<AppSettings> instance,
{bool isInserting = false}) {
final context = VerificationContext();
final data = instance.toColumns(true);
if (data.containsKey('id')) {
context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta));
}
if (data.containsKey('max_bitrate_wifi')) {
context.handle(
_maxBitrateWifiMeta,
maxBitrateWifi.isAcceptableOrUnknown(
data['max_bitrate_wifi']!, _maxBitrateWifiMeta));
} else if (isInserting) {
context.missing(_maxBitrateWifiMeta);
}
if (data.containsKey('max_bitrate_mobile')) {
context.handle(
_maxBitrateMobileMeta,
maxBitrateMobile.isAcceptableOrUnknown(
data['max_bitrate_mobile']!, _maxBitrateMobileMeta));
} else if (isInserting) {
context.missing(_maxBitrateMobileMeta);
}
if (data.containsKey('stream_format')) {
context.handle(
_streamFormatMeta,
streamFormat.isAcceptableOrUnknown(
data['stream_format']!, _streamFormatMeta));
}
return context;
}
@override
Set<GeneratedColumn> get $primaryKey => {id};
@override
AppSettings map(Map<String, dynamic> data, {String? tablePrefix}) {
final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : '';
return AppSettings(
maxBitrateWifi: attachedDatabase.typeMapping
.read(DriftSqlType.int, data['${effectivePrefix}max_bitrate_wifi'])!,
maxBitrateMobile: attachedDatabase.typeMapping.read(
DriftSqlType.int, data['${effectivePrefix}max_bitrate_mobile'])!,
streamFormat: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}stream_format']),
);
}
@override
AppSettingsTable createAlias(String alias) {
return AppSettingsTable(attachedDatabase, alias);
}
@override
bool get dontWriteConstraints => true;
}
class AppSettingsCompanion extends UpdateCompanion<AppSettings> {
final Value<int> id;
final Value<int> maxBitrateWifi;
final Value<int> maxBitrateMobile;
final Value<String?> streamFormat;
const AppSettingsCompanion({
this.id = const Value.absent(),
this.maxBitrateWifi = const Value.absent(),
this.maxBitrateMobile = const Value.absent(),
this.streamFormat = const Value.absent(),
});
AppSettingsCompanion.insert({
this.id = const Value.absent(),
required int maxBitrateWifi,
required int maxBitrateMobile,
this.streamFormat = const Value.absent(),
}) : maxBitrateWifi = Value(maxBitrateWifi),
maxBitrateMobile = Value(maxBitrateMobile);
static Insertable<AppSettings> custom({
Expression<int>? id,
Expression<int>? maxBitrateWifi,
Expression<int>? maxBitrateMobile,
Expression<String>? streamFormat,
}) {
return RawValuesInsertable({
if (id != null) 'id': id,
if (maxBitrateWifi != null) 'max_bitrate_wifi': maxBitrateWifi,
if (maxBitrateMobile != null) 'max_bitrate_mobile': maxBitrateMobile,
if (streamFormat != null) 'stream_format': streamFormat,
});
}
AppSettingsCompanion copyWith(
{Value<int>? id,
Value<int>? maxBitrateWifi,
Value<int>? maxBitrateMobile,
Value<String?>? streamFormat}) {
return AppSettingsCompanion(
id: id ?? this.id,
maxBitrateWifi: maxBitrateWifi ?? this.maxBitrateWifi,
maxBitrateMobile: maxBitrateMobile ?? this.maxBitrateMobile,
streamFormat: streamFormat ?? this.streamFormat,
);
}
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
if (id.present) {
map['id'] = Variable<int>(id.value);
}
if (maxBitrateWifi.present) {
map['max_bitrate_wifi'] = Variable<int>(maxBitrateWifi.value);
}
if (maxBitrateMobile.present) {
map['max_bitrate_mobile'] = Variable<int>(maxBitrateMobile.value);
}
if (streamFormat.present) {
map['stream_format'] = Variable<String>(streamFormat.value);
}
return map;
}
@override
String toString() {
return (StringBuffer('AppSettingsCompanion(')
..write('id: $id, ')
..write('maxBitrateWifi: $maxBitrateWifi, ')
..write('maxBitrateMobile: $maxBitrateMobile, ')
..write('streamFormat: $streamFormat')
..write(')'))
.toString();
}
}
class Sources extends Table with TableInfo<Sources, Source> {
@override
final GeneratedDatabase attachedDatabase;
final String? _alias;
Sources(this.attachedDatabase, [this._alias]);
static const VerificationMeta _idMeta = const VerificationMeta('id');
late final GeneratedColumn<int> id = GeneratedColumn<int>(
'id', aliasedName, false,
hasAutoIncrement: true,
type: DriftSqlType.int,
requiredDuringInsert: false,
$customConstraints: 'NOT NULL PRIMARY KEY AUTOINCREMENT');
static const VerificationMeta _nameMeta = const VerificationMeta('name');
late final GeneratedColumn<String> name = GeneratedColumn<String>(
'name', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL COLLATE NOCASE');
static const VerificationMeta _addressMeta =
const VerificationMeta('address');
late final GeneratedColumnWithTypeConverter<Uri, String> address =
GeneratedColumn<String>('address', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL')
.withConverter<Uri>(Sources.$converteraddress);
static const VerificationMeta _isActiveMeta =
const VerificationMeta('isActive');
late final GeneratedColumn<bool> isActive = GeneratedColumn<bool>(
'is_active', aliasedName, true,
type: DriftSqlType.bool,
requiredDuringInsert: false,
$customConstraints: 'UNIQUE');
static const VerificationMeta _createdAtMeta =
const VerificationMeta('createdAt');
late final GeneratedColumn<DateTime> createdAt = GeneratedColumn<DateTime>(
'created_at', aliasedName, false,
type: DriftSqlType.dateTime,
requiredDuringInsert: false,
$customConstraints:
'NOT NULL DEFAULT (strftime(\'%s\', CURRENT_TIMESTAMP))',
defaultValue:
const CustomExpression('strftime(\'%s\', CURRENT_TIMESTAMP)'));
@override
List<GeneratedColumn> get $columns =>
[id, name, address, isActive, createdAt];
@override
String get aliasedName => _alias ?? 'sources';
@override
String get actualTableName => 'sources';
@override
VerificationContext validateIntegrity(Insertable<Source> instance,
{bool isInserting = false}) {
final context = VerificationContext();
final data = instance.toColumns(true);
if (data.containsKey('id')) {
context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta));
}
if (data.containsKey('name')) {
context.handle(
_nameMeta, name.isAcceptableOrUnknown(data['name']!, _nameMeta));
} else if (isInserting) {
context.missing(_nameMeta);
}
context.handle(_addressMeta, const VerificationResult.success());
if (data.containsKey('is_active')) {
context.handle(_isActiveMeta,
isActive.isAcceptableOrUnknown(data['is_active']!, _isActiveMeta));
}
if (data.containsKey('created_at')) {
context.handle(_createdAtMeta,
createdAt.isAcceptableOrUnknown(data['created_at']!, _createdAtMeta));
}
return context;
}
@override
Set<GeneratedColumn> get $primaryKey => {id};
@override
Source map(Map<String, dynamic> data, {String? tablePrefix}) {
final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : '';
return Source(
id: attachedDatabase.typeMapping
.read(DriftSqlType.int, data['${effectivePrefix}id'])!,
name: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}name'])!,
address: Sources.$converteraddress.fromSql(attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}address'])!),
isActive: attachedDatabase.typeMapping
.read(DriftSqlType.bool, data['${effectivePrefix}is_active']),
createdAt: attachedDatabase.typeMapping
.read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!,
);
}
@override
Sources createAlias(String alias) {
return Sources(attachedDatabase, alias);
}
static TypeConverter<Uri, String> $converteraddress = const UriConverter();
@override
bool get dontWriteConstraints => true;
}
class Source extends DataClass implements Insertable<Source> {
final int id;
final String name;
final Uri address;
final bool? isActive;
final DateTime createdAt;
const Source(
{required this.id,
required this.name,
required this.address,
this.isActive,
required this.createdAt});
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
map['id'] = Variable<int>(id);
map['name'] = Variable<String>(name);
{
final converter = Sources.$converteraddress;
map['address'] = Variable<String>(converter.toSql(address));
}
if (!nullToAbsent || isActive != null) {
map['is_active'] = Variable<bool>(isActive);
}
map['created_at'] = Variable<DateTime>(createdAt);
return map;
}
SourcesCompanion toCompanion(bool nullToAbsent) {
return SourcesCompanion(
id: Value(id),
name: Value(name),
address: Value(address),
isActive: isActive == null && nullToAbsent
? const Value.absent()
: Value(isActive),
createdAt: Value(createdAt),
);
}
factory Source.fromJson(Map<String, dynamic> json,
{ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return Source(
id: serializer.fromJson<int>(json['id']),
name: serializer.fromJson<String>(json['name']),
address: serializer.fromJson<Uri>(json['address']),
isActive: serializer.fromJson<bool?>(json['is_active']),
createdAt: serializer.fromJson<DateTime>(json['created_at']),
);
}
@override
Map<String, dynamic> toJson({ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return <String, dynamic>{
'id': serializer.toJson<int>(id),
'name': serializer.toJson<String>(name),
'address': serializer.toJson<Uri>(address),
'is_active': serializer.toJson<bool?>(isActive),
'created_at': serializer.toJson<DateTime>(createdAt),
};
}
Source copyWith(
{int? id,
String? name,
Uri? address,
Value<bool?> isActive = const Value.absent(),
DateTime? createdAt}) =>
Source(
id: id ?? this.id,
name: name ?? this.name,
address: address ?? this.address,
isActive: isActive.present ? isActive.value : this.isActive,
createdAt: createdAt ?? this.createdAt,
);
@override
String toString() {
return (StringBuffer('Source(')
..write('id: $id, ')
..write('name: $name, ')
..write('address: $address, ')
..write('isActive: $isActive, ')
..write('createdAt: $createdAt')
..write(')'))
.toString();
}
@override
int get hashCode => Object.hash(id, name, address, isActive, createdAt);
@override
bool operator ==(Object other) =>
identical(this, other) ||
(other is Source &&
other.id == this.id &&
other.name == this.name &&
other.address == this.address &&
other.isActive == this.isActive &&
other.createdAt == this.createdAt);
}
class SourcesCompanion extends UpdateCompanion<Source> {
final Value<int> id;
final Value<String> name;
final Value<Uri> address;
final Value<bool?> isActive;
final Value<DateTime> createdAt;
const SourcesCompanion({
this.id = const Value.absent(),
this.name = const Value.absent(),
this.address = const Value.absent(),
this.isActive = const Value.absent(),
this.createdAt = const Value.absent(),
});
SourcesCompanion.insert({
this.id = const Value.absent(),
required String name,
required Uri address,
this.isActive = const Value.absent(),
this.createdAt = const Value.absent(),
}) : name = Value(name),
address = Value(address);
static Insertable<Source> custom({
Expression<int>? id,
Expression<String>? name,
Expression<String>? address,
Expression<bool>? isActive,
Expression<DateTime>? createdAt,
}) {
return RawValuesInsertable({
if (id != null) 'id': id,
if (name != null) 'name': name,
if (address != null) 'address': address,
if (isActive != null) 'is_active': isActive,
if (createdAt != null) 'created_at': createdAt,
});
}
SourcesCompanion copyWith(
{Value<int>? id,
Value<String>? name,
Value<Uri>? address,
Value<bool?>? isActive,
Value<DateTime>? createdAt}) {
return SourcesCompanion(
id: id ?? this.id,
name: name ?? this.name,
address: address ?? this.address,
isActive: isActive ?? this.isActive,
createdAt: createdAt ?? this.createdAt,
);
}
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
if (id.present) {
map['id'] = Variable<int>(id.value);
}
if (name.present) {
map['name'] = Variable<String>(name.value);
}
if (address.present) {
final converter = Sources.$converteraddress;
map['address'] = Variable<String>(converter.toSql(address.value));
}
if (isActive.present) {
map['is_active'] = Variable<bool>(isActive.value);
}
if (createdAt.present) {
map['created_at'] = Variable<DateTime>(createdAt.value);
}
return map;
}
@override
String toString() {
return (StringBuffer('SourcesCompanion(')
..write('id: $id, ')
..write('name: $name, ')
..write('address: $address, ')
..write('isActive: $isActive, ')
..write('createdAt: $createdAt')
..write(')'))
.toString();
}
}
class SubsonicSources extends Table
with TableInfo<SubsonicSources, SubsonicSource> {
@override
final GeneratedDatabase attachedDatabase;
final String? _alias;
SubsonicSources(this.attachedDatabase, [this._alias]);
static const VerificationMeta _sourceIdMeta =
const VerificationMeta('sourceId');
late final GeneratedColumn<int> sourceId = GeneratedColumn<int>(
'source_id', aliasedName, false,
type: DriftSqlType.int,
requiredDuringInsert: false,
$customConstraints: 'NOT NULL PRIMARY KEY');
static const VerificationMeta _featuresMeta =
const VerificationMeta('features');
late final GeneratedColumnWithTypeConverter<IList<SubsonicFeature>, String>
features = GeneratedColumn<String>('features', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL')
.withConverter<IList<SubsonicFeature>>(
SubsonicSources.$converterfeatures);
static const VerificationMeta _usernameMeta =
const VerificationMeta('username');
late final GeneratedColumn<String> username = GeneratedColumn<String>(
'username', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL');
static const VerificationMeta _passwordMeta =
const VerificationMeta('password');
late final GeneratedColumn<String> password = GeneratedColumn<String>(
'password', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL');
static const VerificationMeta _useTokenAuthMeta =
const VerificationMeta('useTokenAuth');
late final GeneratedColumn<bool> useTokenAuth = GeneratedColumn<bool>(
'use_token_auth', aliasedName, false,
type: DriftSqlType.bool,
requiredDuringInsert: false,
$customConstraints: 'NOT NULL DEFAULT 1',
defaultValue: const CustomExpression('1'));
@override
List<GeneratedColumn> get $columns =>
[sourceId, features, username, password, useTokenAuth];
@override
String get aliasedName => _alias ?? 'subsonic_sources';
@override
String get actualTableName => 'subsonic_sources';
@override
VerificationContext validateIntegrity(Insertable<SubsonicSource> instance,
{bool isInserting = false}) {
final context = VerificationContext();
final data = instance.toColumns(true);
if (data.containsKey('source_id')) {
context.handle(_sourceIdMeta,
sourceId.isAcceptableOrUnknown(data['source_id']!, _sourceIdMeta));
}
context.handle(_featuresMeta, const VerificationResult.success());
if (data.containsKey('username')) {
context.handle(_usernameMeta,
username.isAcceptableOrUnknown(data['username']!, _usernameMeta));
} else if (isInserting) {
context.missing(_usernameMeta);
}
if (data.containsKey('password')) {
context.handle(_passwordMeta,
password.isAcceptableOrUnknown(data['password']!, _passwordMeta));
} else if (isInserting) {
context.missing(_passwordMeta);
}
if (data.containsKey('use_token_auth')) {
context.handle(
_useTokenAuthMeta,
useTokenAuth.isAcceptableOrUnknown(
data['use_token_auth']!, _useTokenAuthMeta));
}
return context;
}
@override
Set<GeneratedColumn> get $primaryKey => {sourceId};
@override
SubsonicSource map(Map<String, dynamic> data, {String? tablePrefix}) {
final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : '';
return SubsonicSource(
sourceId: attachedDatabase.typeMapping
.read(DriftSqlType.int, data['${effectivePrefix}source_id'])!,
features: SubsonicSources.$converterfeatures.fromSql(attachedDatabase
.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}features'])!),
username: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}username'])!,
password: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}password'])!,
useTokenAuth: attachedDatabase.typeMapping
.read(DriftSqlType.bool, data['${effectivePrefix}use_token_auth'])!,
);
}
@override
SubsonicSources createAlias(String alias) {
return SubsonicSources(attachedDatabase, alias);
}
static TypeConverter<IList<SubsonicFeature>, String> $converterfeatures =
const SubsonicFeatureListConverter();
@override
List<String> get customConstraints =>
const ['FOREIGN KEY(source_id)REFERENCES sources(id)ON DELETE CASCADE'];
@override
bool get dontWriteConstraints => true;
}
class SubsonicSource extends DataClass implements Insertable<SubsonicSource> {
final int sourceId;
final IList<SubsonicFeature> features;
final String username;
final String password;
final bool useTokenAuth;
const SubsonicSource(
{required this.sourceId,
required this.features,
required this.username,
required this.password,
required this.useTokenAuth});
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
map['source_id'] = Variable<int>(sourceId);
{
final converter = SubsonicSources.$converterfeatures;
map['features'] = Variable<String>(converter.toSql(features));
}
map['username'] = Variable<String>(username);
map['password'] = Variable<String>(password);
map['use_token_auth'] = Variable<bool>(useTokenAuth);
return map;
}
SubsonicSourcesCompanion toCompanion(bool nullToAbsent) {
return SubsonicSourcesCompanion(
sourceId: Value(sourceId),
features: Value(features),
username: Value(username),
password: Value(password),
useTokenAuth: Value(useTokenAuth),
);
}
factory SubsonicSource.fromJson(Map<String, dynamic> json,
{ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return SubsonicSource(
sourceId: serializer.fromJson<int>(json['source_id']),
features: serializer.fromJson<IList<SubsonicFeature>>(json['features']),
username: serializer.fromJson<String>(json['username']),
password: serializer.fromJson<String>(json['password']),
useTokenAuth: serializer.fromJson<bool>(json['use_token_auth']),
);
}
@override
Map<String, dynamic> toJson({ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return <String, dynamic>{
'source_id': serializer.toJson<int>(sourceId),
'features': serializer.toJson<IList<SubsonicFeature>>(features),
'username': serializer.toJson<String>(username),
'password': serializer.toJson<String>(password),
'use_token_auth': serializer.toJson<bool>(useTokenAuth),
};
}
SubsonicSource copyWith(
{int? sourceId,
IList<SubsonicFeature>? features,
String? username,
String? password,
bool? useTokenAuth}) =>
SubsonicSource(
sourceId: sourceId ?? this.sourceId,
features: features ?? this.features,
username: username ?? this.username,
password: password ?? this.password,
useTokenAuth: useTokenAuth ?? this.useTokenAuth,
);
@override
String toString() {
return (StringBuffer('SubsonicSource(')
..write('sourceId: $sourceId, ')
..write('features: $features, ')
..write('username: $username, ')
..write('password: $password, ')
..write('useTokenAuth: $useTokenAuth')
..write(')'))
.toString();
}
@override
int get hashCode =>
Object.hash(sourceId, features, username, password, useTokenAuth);
@override
bool operator ==(Object other) =>
identical(this, other) ||
(other is SubsonicSource &&
other.sourceId == this.sourceId &&
other.features == this.features &&
other.username == this.username &&
other.password == this.password &&
other.useTokenAuth == this.useTokenAuth);
}
class SubsonicSourcesCompanion extends UpdateCompanion<SubsonicSource> {
final Value<int> sourceId;
final Value<IList<SubsonicFeature>> features;
final Value<String> username;
final Value<String> password;
final Value<bool> useTokenAuth;
const SubsonicSourcesCompanion({
this.sourceId = const Value.absent(),
this.features = const Value.absent(),
this.username = const Value.absent(),
this.password = const Value.absent(),
this.useTokenAuth = const Value.absent(),
});
SubsonicSourcesCompanion.insert({
this.sourceId = const Value.absent(),
required IList<SubsonicFeature> features,
required String username,
required String password,
this.useTokenAuth = const Value.absent(),
}) : features = Value(features),
username = Value(username),
password = Value(password);
static Insertable<SubsonicSource> custom({
Expression<int>? sourceId,
Expression<String>? features,
Expression<String>? username,
Expression<String>? password,
Expression<bool>? useTokenAuth,
}) {
return RawValuesInsertable({
if (sourceId != null) 'source_id': sourceId,
if (features != null) 'features': features,
if (username != null) 'username': username,
if (password != null) 'password': password,
if (useTokenAuth != null) 'use_token_auth': useTokenAuth,
});
}
SubsonicSourcesCompanion copyWith(
{Value<int>? sourceId,
Value<IList<SubsonicFeature>>? features,
Value<String>? username,
Value<String>? password,
Value<bool>? useTokenAuth}) {
return SubsonicSourcesCompanion(
sourceId: sourceId ?? this.sourceId,
features: features ?? this.features,
username: username ?? this.username,
password: password ?? this.password,
useTokenAuth: useTokenAuth ?? this.useTokenAuth,
);
}
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
if (sourceId.present) {
map['source_id'] = Variable<int>(sourceId.value);
}
if (features.present) {
final converter = SubsonicSources.$converterfeatures;
map['features'] = Variable<String>(converter.toSql(features.value));
}
if (username.present) {
map['username'] = Variable<String>(username.value);
}
if (password.present) {
map['password'] = Variable<String>(password.value);
}
if (useTokenAuth.present) {
map['use_token_auth'] = Variable<bool>(useTokenAuth.value);
}
return map;
}
@override
String toString() {
return (StringBuffer('SubsonicSourcesCompanion(')
..write('sourceId: $sourceId, ')
..write('features: $features, ')
..write('username: $username, ')
..write('password: $password, ')
..write('useTokenAuth: $useTokenAuth')
..write(')'))
.toString();
}
}
class Artists extends Table with TableInfo<Artists, Artist> {
@override
final GeneratedDatabase attachedDatabase;
final String? _alias;
Artists(this.attachedDatabase, [this._alias]);
static const VerificationMeta _sourceIdMeta =
const VerificationMeta('sourceId');
late final GeneratedColumn<int> sourceId = GeneratedColumn<int>(
'source_id', aliasedName, false,
type: DriftSqlType.int,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL');
static const VerificationMeta _idMeta = const VerificationMeta('id');
late final GeneratedColumn<String> id = GeneratedColumn<String>(
'id', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL');
static const VerificationMeta _nameMeta = const VerificationMeta('name');
late final GeneratedColumn<String> name = GeneratedColumn<String>(
'name', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL COLLATE NOCASE');
static const VerificationMeta _albumCountMeta =
const VerificationMeta('albumCount');
late final GeneratedColumn<int> albumCount = GeneratedColumn<int>(
'album_count', aliasedName, false,
type: DriftSqlType.int,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL');
static const VerificationMeta _starredMeta =
const VerificationMeta('starred');
late final GeneratedColumn<DateTime> starred = GeneratedColumn<DateTime>(
'starred', aliasedName, true,
type: DriftSqlType.dateTime,
requiredDuringInsert: false,
$customConstraints: '');
static const VerificationMeta _updatedMeta =
const VerificationMeta('updated');
late final GeneratedColumn<DateTime> updated = GeneratedColumn<DateTime>(
'updated', aliasedName, false,
type: DriftSqlType.dateTime,
requiredDuringInsert: false,
$customConstraints:
'NOT NULL DEFAULT (strftime(\'%s\', CURRENT_TIMESTAMP))',
defaultValue:
const CustomExpression('strftime(\'%s\', CURRENT_TIMESTAMP)'));
@override
List<GeneratedColumn> get $columns =>
[sourceId, id, name, albumCount, starred, updated];
@override
String get aliasedName => _alias ?? 'artists';
@override
String get actualTableName => 'artists';
@override
VerificationContext validateIntegrity(Insertable<Artist> instance,
{bool isInserting = false}) {
final context = VerificationContext();
final data = instance.toColumns(true);
if (data.containsKey('source_id')) {
context.handle(_sourceIdMeta,
sourceId.isAcceptableOrUnknown(data['source_id']!, _sourceIdMeta));
} else if (isInserting) {
context.missing(_sourceIdMeta);
}
if (data.containsKey('id')) {
context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta));
} else if (isInserting) {
context.missing(_idMeta);
}
if (data.containsKey('name')) {
context.handle(
_nameMeta, name.isAcceptableOrUnknown(data['name']!, _nameMeta));
} else if (isInserting) {
context.missing(_nameMeta);
}
if (data.containsKey('album_count')) {
context.handle(
_albumCountMeta,
albumCount.isAcceptableOrUnknown(
data['album_count']!, _albumCountMeta));
} else if (isInserting) {
context.missing(_albumCountMeta);
}
if (data.containsKey('starred')) {
context.handle(_starredMeta,
starred.isAcceptableOrUnknown(data['starred']!, _starredMeta));
}
if (data.containsKey('updated')) {
context.handle(_updatedMeta,
updated.isAcceptableOrUnknown(data['updated']!, _updatedMeta));
}
return context;
}
@override
Set<GeneratedColumn> get $primaryKey => {sourceId, id};
@override
Artist map(Map<String, dynamic> data, {String? tablePrefix}) {
final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : '';
return Artist(
sourceId: attachedDatabase.typeMapping
.read(DriftSqlType.int, data['${effectivePrefix}source_id'])!,
id: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}id'])!,
name: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}name'])!,
albumCount: attachedDatabase.typeMapping
.read(DriftSqlType.int, data['${effectivePrefix}album_count'])!,
starred: attachedDatabase.typeMapping
.read(DriftSqlType.dateTime, data['${effectivePrefix}starred']),
);
}
@override
Artists createAlias(String alias) {
return Artists(attachedDatabase, alias);
}
@override
List<String> get customConstraints => const [
'PRIMARY KEY(source_id, id)',
'FOREIGN KEY(source_id)REFERENCES sources(id)ON DELETE CASCADE'
];
@override
bool get dontWriteConstraints => true;
}
class ArtistsCompanion extends UpdateCompanion<Artist> {
final Value<int> sourceId;
final Value<String> id;
final Value<String> name;
final Value<int> albumCount;
final Value<DateTime?> starred;
final Value<DateTime> updated;
final Value<int> rowid;
const ArtistsCompanion({
this.sourceId = const Value.absent(),
this.id = const Value.absent(),
this.name = const Value.absent(),
this.albumCount = const Value.absent(),
this.starred = const Value.absent(),
this.updated = const Value.absent(),
this.rowid = const Value.absent(),
});
ArtistsCompanion.insert({
required int sourceId,
required String id,
required String name,
required int albumCount,
this.starred = const Value.absent(),
this.updated = const Value.absent(),
this.rowid = const Value.absent(),
}) : sourceId = Value(sourceId),
id = Value(id),
name = Value(name),
albumCount = Value(albumCount);
static Insertable<Artist> custom({
Expression<int>? sourceId,
Expression<String>? id,
Expression<String>? name,
Expression<int>? albumCount,
Expression<DateTime>? starred,
Expression<DateTime>? updated,
Expression<int>? rowid,
}) {
return RawValuesInsertable({
if (sourceId != null) 'source_id': sourceId,
if (id != null) 'id': id,
if (name != null) 'name': name,
if (albumCount != null) 'album_count': albumCount,
if (starred != null) 'starred': starred,
if (updated != null) 'updated': updated,
if (rowid != null) 'rowid': rowid,
});
}
ArtistsCompanion copyWith(
{Value<int>? sourceId,
Value<String>? id,
Value<String>? name,
Value<int>? albumCount,
Value<DateTime?>? starred,
Value<DateTime>? updated,
Value<int>? rowid}) {
return ArtistsCompanion(
sourceId: sourceId ?? this.sourceId,
id: id ?? this.id,
name: name ?? this.name,
albumCount: albumCount ?? this.albumCount,
starred: starred ?? this.starred,
updated: updated ?? this.updated,
rowid: rowid ?? this.rowid,
);
}
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
if (sourceId.present) {
map['source_id'] = Variable<int>(sourceId.value);
}
if (id.present) {
map['id'] = Variable<String>(id.value);
}
if (name.present) {
map['name'] = Variable<String>(name.value);
}
if (albumCount.present) {
map['album_count'] = Variable<int>(albumCount.value);
}
if (starred.present) {
map['starred'] = Variable<DateTime>(starred.value);
}
if (updated.present) {
map['updated'] = Variable<DateTime>(updated.value);
}
if (rowid.present) {
map['rowid'] = Variable<int>(rowid.value);
}
return map;
}
@override
String toString() {
return (StringBuffer('ArtistsCompanion(')
..write('sourceId: $sourceId, ')
..write('id: $id, ')
..write('name: $name, ')
..write('albumCount: $albumCount, ')
..write('starred: $starred, ')
..write('updated: $updated, ')
..write('rowid: $rowid')
..write(')'))
.toString();
}
}
class ArtistsFts extends Table
with
TableInfo<ArtistsFts, ArtistsFt>,
VirtualTableInfo<ArtistsFts, ArtistsFt> {
@override
final GeneratedDatabase attachedDatabase;
final String? _alias;
ArtistsFts(this.attachedDatabase, [this._alias]);
static const VerificationMeta _sourceIdMeta =
const VerificationMeta('sourceId');
late final GeneratedColumn<String> sourceId = GeneratedColumn<String>(
'source_id', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: '');
static const VerificationMeta _nameMeta = const VerificationMeta('name');
late final GeneratedColumn<String> name = GeneratedColumn<String>(
'name', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: '');
@override
List<GeneratedColumn> get $columns => [sourceId, name];
@override
String get aliasedName => _alias ?? 'artists_fts';
@override
String get actualTableName => 'artists_fts';
@override
VerificationContext validateIntegrity(Insertable<ArtistsFt> instance,
{bool isInserting = false}) {
final context = VerificationContext();
final data = instance.toColumns(true);
if (data.containsKey('source_id')) {
context.handle(_sourceIdMeta,
sourceId.isAcceptableOrUnknown(data['source_id']!, _sourceIdMeta));
} else if (isInserting) {
context.missing(_sourceIdMeta);
}
if (data.containsKey('name')) {
context.handle(
_nameMeta, name.isAcceptableOrUnknown(data['name']!, _nameMeta));
} else if (isInserting) {
context.missing(_nameMeta);
}
return context;
}
@override
Set<GeneratedColumn> get $primaryKey => const {};
@override
ArtistsFt map(Map<String, dynamic> data, {String? tablePrefix}) {
final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : '';
return ArtistsFt(
sourceId: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}source_id'])!,
name: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}name'])!,
);
}
@override
ArtistsFts createAlias(String alias) {
return ArtistsFts(attachedDatabase, alias);
}
@override
bool get dontWriteConstraints => true;
@override
String get moduleAndArgs =>
'fts5(source_id, name, content=artists, content_rowid=rowid)';
}
class ArtistsFt extends DataClass implements Insertable<ArtistsFt> {
final String sourceId;
final String name;
const ArtistsFt({required this.sourceId, required this.name});
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
map['source_id'] = Variable<String>(sourceId);
map['name'] = Variable<String>(name);
return map;
}
ArtistsFtsCompanion toCompanion(bool nullToAbsent) {
return ArtistsFtsCompanion(
sourceId: Value(sourceId),
name: Value(name),
);
}
factory ArtistsFt.fromJson(Map<String, dynamic> json,
{ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return ArtistsFt(
sourceId: serializer.fromJson<String>(json['source_id']),
name: serializer.fromJson<String>(json['name']),
);
}
@override
Map<String, dynamic> toJson({ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return <String, dynamic>{
'source_id': serializer.toJson<String>(sourceId),
'name': serializer.toJson<String>(name),
};
}
ArtistsFt copyWith({String? sourceId, String? name}) => ArtistsFt(
sourceId: sourceId ?? this.sourceId,
name: name ?? this.name,
);
@override
String toString() {
return (StringBuffer('ArtistsFt(')
..write('sourceId: $sourceId, ')
..write('name: $name')
..write(')'))
.toString();
}
@override
int get hashCode => Object.hash(sourceId, name);
@override
bool operator ==(Object other) =>
identical(this, other) ||
(other is ArtistsFt &&
other.sourceId == this.sourceId &&
other.name == this.name);
}
class ArtistsFtsCompanion extends UpdateCompanion<ArtistsFt> {
final Value<String> sourceId;
final Value<String> name;
final Value<int> rowid;
const ArtistsFtsCompanion({
this.sourceId = const Value.absent(),
this.name = const Value.absent(),
this.rowid = const Value.absent(),
});
ArtistsFtsCompanion.insert({
required String sourceId,
required String name,
this.rowid = const Value.absent(),
}) : sourceId = Value(sourceId),
name = Value(name);
static Insertable<ArtistsFt> custom({
Expression<String>? sourceId,
Expression<String>? name,
Expression<int>? rowid,
}) {
return RawValuesInsertable({
if (sourceId != null) 'source_id': sourceId,
if (name != null) 'name': name,
if (rowid != null) 'rowid': rowid,
});
}
ArtistsFtsCompanion copyWith(
{Value<String>? sourceId, Value<String>? name, Value<int>? rowid}) {
return ArtistsFtsCompanion(
sourceId: sourceId ?? this.sourceId,
name: name ?? this.name,
rowid: rowid ?? this.rowid,
);
}
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
if (sourceId.present) {
map['source_id'] = Variable<String>(sourceId.value);
}
if (name.present) {
map['name'] = Variable<String>(name.value);
}
if (rowid.present) {
map['rowid'] = Variable<int>(rowid.value);
}
return map;
}
@override
String toString() {
return (StringBuffer('ArtistsFtsCompanion(')
..write('sourceId: $sourceId, ')
..write('name: $name, ')
..write('rowid: $rowid')
..write(')'))
.toString();
}
}
class Albums extends Table with TableInfo<Albums, Album> {
@override
final GeneratedDatabase attachedDatabase;
final String? _alias;
Albums(this.attachedDatabase, [this._alias]);
static const VerificationMeta _sourceIdMeta =
const VerificationMeta('sourceId');
late final GeneratedColumn<int> sourceId = GeneratedColumn<int>(
'source_id', aliasedName, false,
type: DriftSqlType.int,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL');
static const VerificationMeta _idMeta = const VerificationMeta('id');
late final GeneratedColumn<String> id = GeneratedColumn<String>(
'id', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL');
static const VerificationMeta _artistIdMeta =
const VerificationMeta('artistId');
late final GeneratedColumn<String> artistId = GeneratedColumn<String>(
'artist_id', aliasedName, true,
type: DriftSqlType.string,
requiredDuringInsert: false,
$customConstraints: '');
static const VerificationMeta _nameMeta = const VerificationMeta('name');
late final GeneratedColumn<String> name = GeneratedColumn<String>(
'name', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL COLLATE NOCASE');
static const VerificationMeta _albumArtistMeta =
const VerificationMeta('albumArtist');
late final GeneratedColumn<String> albumArtist = GeneratedColumn<String>(
'album_artist', aliasedName, true,
type: DriftSqlType.string,
requiredDuringInsert: false,
$customConstraints: 'COLLATE NOCASE');
static const VerificationMeta _createdMeta =
const VerificationMeta('created');
late final GeneratedColumn<DateTime> created = GeneratedColumn<DateTime>(
'created', aliasedName, false,
type: DriftSqlType.dateTime,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL');
static const VerificationMeta _coverArtMeta =
const VerificationMeta('coverArt');
late final GeneratedColumn<String> coverArt = GeneratedColumn<String>(
'cover_art', aliasedName, true,
type: DriftSqlType.string,
requiredDuringInsert: false,
$customConstraints: '');
static const VerificationMeta _genreMeta = const VerificationMeta('genre');
late final GeneratedColumn<String> genre = GeneratedColumn<String>(
'genre', aliasedName, true,
type: DriftSqlType.string,
requiredDuringInsert: false,
$customConstraints: '');
static const VerificationMeta _yearMeta = const VerificationMeta('year');
late final GeneratedColumn<int> year = GeneratedColumn<int>(
'year', aliasedName, true,
type: DriftSqlType.int,
requiredDuringInsert: false,
$customConstraints: '');
static const VerificationMeta _starredMeta =
const VerificationMeta('starred');
late final GeneratedColumn<DateTime> starred = GeneratedColumn<DateTime>(
'starred', aliasedName, true,
type: DriftSqlType.dateTime,
requiredDuringInsert: false,
$customConstraints: '');
static const VerificationMeta _songCountMeta =
const VerificationMeta('songCount');
late final GeneratedColumn<int> songCount = GeneratedColumn<int>(
'song_count', aliasedName, false,
type: DriftSqlType.int,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL');
static const VerificationMeta _frequentRankMeta =
const VerificationMeta('frequentRank');
late final GeneratedColumn<int> frequentRank = GeneratedColumn<int>(
'frequent_rank', aliasedName, true,
type: DriftSqlType.int,
requiredDuringInsert: false,
$customConstraints: '');
static const VerificationMeta _recentRankMeta =
const VerificationMeta('recentRank');
late final GeneratedColumn<int> recentRank = GeneratedColumn<int>(
'recent_rank', aliasedName, true,
type: DriftSqlType.int,
requiredDuringInsert: false,
$customConstraints: '');
static const VerificationMeta _isDeletedMeta =
const VerificationMeta('isDeleted');
late final GeneratedColumn<bool> isDeleted = GeneratedColumn<bool>(
'is_deleted', aliasedName, false,
type: DriftSqlType.bool,
requiredDuringInsert: false,
$customConstraints: 'NOT NULL DEFAULT 0',
defaultValue: const CustomExpression('0'));
static const VerificationMeta _updatedMeta =
const VerificationMeta('updated');
late final GeneratedColumn<DateTime> updated = GeneratedColumn<DateTime>(
'updated', aliasedName, false,
type: DriftSqlType.dateTime,
requiredDuringInsert: false,
$customConstraints:
'NOT NULL DEFAULT (strftime(\'%s\', CURRENT_TIMESTAMP))',
defaultValue:
const CustomExpression('strftime(\'%s\', CURRENT_TIMESTAMP)'));
@override
List<GeneratedColumn> get $columns => [
sourceId,
id,
artistId,
name,
albumArtist,
created,
coverArt,
genre,
year,
starred,
songCount,
frequentRank,
recentRank,
isDeleted,
updated
];
@override
String get aliasedName => _alias ?? 'albums';
@override
String get actualTableName => 'albums';
@override
VerificationContext validateIntegrity(Insertable<Album> instance,
{bool isInserting = false}) {
final context = VerificationContext();
final data = instance.toColumns(true);
if (data.containsKey('source_id')) {
context.handle(_sourceIdMeta,
sourceId.isAcceptableOrUnknown(data['source_id']!, _sourceIdMeta));
} else if (isInserting) {
context.missing(_sourceIdMeta);
}
if (data.containsKey('id')) {
context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta));
} else if (isInserting) {
context.missing(_idMeta);
}
if (data.containsKey('artist_id')) {
context.handle(_artistIdMeta,
artistId.isAcceptableOrUnknown(data['artist_id']!, _artistIdMeta));
}
if (data.containsKey('name')) {
context.handle(
_nameMeta, name.isAcceptableOrUnknown(data['name']!, _nameMeta));
} else if (isInserting) {
context.missing(_nameMeta);
}
if (data.containsKey('album_artist')) {
context.handle(
_albumArtistMeta,
albumArtist.isAcceptableOrUnknown(
data['album_artist']!, _albumArtistMeta));
}
if (data.containsKey('created')) {
context.handle(_createdMeta,
created.isAcceptableOrUnknown(data['created']!, _createdMeta));
} else if (isInserting) {
context.missing(_createdMeta);
}
if (data.containsKey('cover_art')) {
context.handle(_coverArtMeta,
coverArt.isAcceptableOrUnknown(data['cover_art']!, _coverArtMeta));
}
if (data.containsKey('genre')) {
context.handle(
_genreMeta, genre.isAcceptableOrUnknown(data['genre']!, _genreMeta));
}
if (data.containsKey('year')) {
context.handle(
_yearMeta, year.isAcceptableOrUnknown(data['year']!, _yearMeta));
}
if (data.containsKey('starred')) {
context.handle(_starredMeta,
starred.isAcceptableOrUnknown(data['starred']!, _starredMeta));
}
if (data.containsKey('song_count')) {
context.handle(_songCountMeta,
songCount.isAcceptableOrUnknown(data['song_count']!, _songCountMeta));
} else if (isInserting) {
context.missing(_songCountMeta);
}
if (data.containsKey('frequent_rank')) {
context.handle(
_frequentRankMeta,
frequentRank.isAcceptableOrUnknown(
data['frequent_rank']!, _frequentRankMeta));
}
if (data.containsKey('recent_rank')) {
context.handle(
_recentRankMeta,
recentRank.isAcceptableOrUnknown(
data['recent_rank']!, _recentRankMeta));
}
if (data.containsKey('is_deleted')) {
context.handle(_isDeletedMeta,
isDeleted.isAcceptableOrUnknown(data['is_deleted']!, _isDeletedMeta));
}
if (data.containsKey('updated')) {
context.handle(_updatedMeta,
updated.isAcceptableOrUnknown(data['updated']!, _updatedMeta));
}
return context;
}
@override
Set<GeneratedColumn> get $primaryKey => {sourceId, id};
@override
Album map(Map<String, dynamic> data, {String? tablePrefix}) {
final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : '';
return Album(
sourceId: attachedDatabase.typeMapping
.read(DriftSqlType.int, data['${effectivePrefix}source_id'])!,
id: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}id'])!,
name: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}name'])!,
artistId: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}artist_id']),
albumArtist: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}album_artist']),
created: attachedDatabase.typeMapping
.read(DriftSqlType.dateTime, data['${effectivePrefix}created'])!,
coverArt: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}cover_art']),
year: attachedDatabase.typeMapping
.read(DriftSqlType.int, data['${effectivePrefix}year']),
starred: attachedDatabase.typeMapping
.read(DriftSqlType.dateTime, data['${effectivePrefix}starred']),
genre: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}genre']),
songCount: attachedDatabase.typeMapping
.read(DriftSqlType.int, data['${effectivePrefix}song_count'])!,
isDeleted: attachedDatabase.typeMapping
.read(DriftSqlType.bool, data['${effectivePrefix}is_deleted'])!,
frequentRank: attachedDatabase.typeMapping
.read(DriftSqlType.int, data['${effectivePrefix}frequent_rank']),
recentRank: attachedDatabase.typeMapping
.read(DriftSqlType.int, data['${effectivePrefix}recent_rank']),
);
}
@override
Albums createAlias(String alias) {
return Albums(attachedDatabase, alias);
}
@override
List<String> get customConstraints => const [
'PRIMARY KEY(source_id, id)',
'FOREIGN KEY(source_id)REFERENCES sources(id)ON DELETE CASCADE'
];
@override
bool get dontWriteConstraints => true;
}
class AlbumsCompanion extends UpdateCompanion<Album> {
final Value<int> sourceId;
final Value<String> id;
final Value<String?> artistId;
final Value<String> name;
final Value<String?> albumArtist;
final Value<DateTime> created;
final Value<String?> coverArt;
final Value<String?> genre;
final Value<int?> year;
final Value<DateTime?> starred;
final Value<int> songCount;
final Value<int?> frequentRank;
final Value<int?> recentRank;
final Value<bool> isDeleted;
final Value<DateTime> updated;
final Value<int> rowid;
const AlbumsCompanion({
this.sourceId = const Value.absent(),
this.id = const Value.absent(),
this.artistId = const Value.absent(),
this.name = const Value.absent(),
this.albumArtist = const Value.absent(),
this.created = const Value.absent(),
this.coverArt = const Value.absent(),
this.genre = const Value.absent(),
this.year = const Value.absent(),
this.starred = const Value.absent(),
this.songCount = const Value.absent(),
this.frequentRank = const Value.absent(),
this.recentRank = const Value.absent(),
this.isDeleted = const Value.absent(),
this.updated = const Value.absent(),
this.rowid = const Value.absent(),
});
AlbumsCompanion.insert({
required int sourceId,
required String id,
this.artistId = const Value.absent(),
required String name,
this.albumArtist = const Value.absent(),
required DateTime created,
this.coverArt = const Value.absent(),
this.genre = const Value.absent(),
this.year = const Value.absent(),
this.starred = const Value.absent(),
required int songCount,
this.frequentRank = const Value.absent(),
this.recentRank = const Value.absent(),
this.isDeleted = const Value.absent(),
this.updated = const Value.absent(),
this.rowid = const Value.absent(),
}) : sourceId = Value(sourceId),
id = Value(id),
name = Value(name),
created = Value(created),
songCount = Value(songCount);
static Insertable<Album> custom({
Expression<int>? sourceId,
Expression<String>? id,
Expression<String>? artistId,
Expression<String>? name,
Expression<String>? albumArtist,
Expression<DateTime>? created,
Expression<String>? coverArt,
Expression<String>? genre,
Expression<int>? year,
Expression<DateTime>? starred,
Expression<int>? songCount,
Expression<int>? frequentRank,
Expression<int>? recentRank,
Expression<bool>? isDeleted,
Expression<DateTime>? updated,
Expression<int>? rowid,
}) {
return RawValuesInsertable({
if (sourceId != null) 'source_id': sourceId,
if (id != null) 'id': id,
if (artistId != null) 'artist_id': artistId,
if (name != null) 'name': name,
if (albumArtist != null) 'album_artist': albumArtist,
if (created != null) 'created': created,
if (coverArt != null) 'cover_art': coverArt,
if (genre != null) 'genre': genre,
if (year != null) 'year': year,
if (starred != null) 'starred': starred,
if (songCount != null) 'song_count': songCount,
if (frequentRank != null) 'frequent_rank': frequentRank,
if (recentRank != null) 'recent_rank': recentRank,
if (isDeleted != null) 'is_deleted': isDeleted,
if (updated != null) 'updated': updated,
if (rowid != null) 'rowid': rowid,
});
}
AlbumsCompanion copyWith(
{Value<int>? sourceId,
Value<String>? id,
Value<String?>? artistId,
Value<String>? name,
Value<String?>? albumArtist,
Value<DateTime>? created,
Value<String?>? coverArt,
Value<String?>? genre,
Value<int?>? year,
Value<DateTime?>? starred,
Value<int>? songCount,
Value<int?>? frequentRank,
Value<int?>? recentRank,
Value<bool>? isDeleted,
Value<DateTime>? updated,
Value<int>? rowid}) {
return AlbumsCompanion(
sourceId: sourceId ?? this.sourceId,
id: id ?? this.id,
artistId: artistId ?? this.artistId,
name: name ?? this.name,
albumArtist: albumArtist ?? this.albumArtist,
created: created ?? this.created,
coverArt: coverArt ?? this.coverArt,
genre: genre ?? this.genre,
year: year ?? this.year,
starred: starred ?? this.starred,
songCount: songCount ?? this.songCount,
frequentRank: frequentRank ?? this.frequentRank,
recentRank: recentRank ?? this.recentRank,
isDeleted: isDeleted ?? this.isDeleted,
updated: updated ?? this.updated,
rowid: rowid ?? this.rowid,
);
}
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
if (sourceId.present) {
map['source_id'] = Variable<int>(sourceId.value);
}
if (id.present) {
map['id'] = Variable<String>(id.value);
}
if (artistId.present) {
map['artist_id'] = Variable<String>(artistId.value);
}
if (name.present) {
map['name'] = Variable<String>(name.value);
}
if (albumArtist.present) {
map['album_artist'] = Variable<String>(albumArtist.value);
}
if (created.present) {
map['created'] = Variable<DateTime>(created.value);
}
if (coverArt.present) {
map['cover_art'] = Variable<String>(coverArt.value);
}
if (genre.present) {
map['genre'] = Variable<String>(genre.value);
}
if (year.present) {
map['year'] = Variable<int>(year.value);
}
if (starred.present) {
map['starred'] = Variable<DateTime>(starred.value);
}
if (songCount.present) {
map['song_count'] = Variable<int>(songCount.value);
}
if (frequentRank.present) {
map['frequent_rank'] = Variable<int>(frequentRank.value);
}
if (recentRank.present) {
map['recent_rank'] = Variable<int>(recentRank.value);
}
if (isDeleted.present) {
map['is_deleted'] = Variable<bool>(isDeleted.value);
}
if (updated.present) {
map['updated'] = Variable<DateTime>(updated.value);
}
if (rowid.present) {
map['rowid'] = Variable<int>(rowid.value);
}
return map;
}
@override
String toString() {
return (StringBuffer('AlbumsCompanion(')
..write('sourceId: $sourceId, ')
..write('id: $id, ')
..write('artistId: $artistId, ')
..write('name: $name, ')
..write('albumArtist: $albumArtist, ')
..write('created: $created, ')
..write('coverArt: $coverArt, ')
..write('genre: $genre, ')
..write('year: $year, ')
..write('starred: $starred, ')
..write('songCount: $songCount, ')
..write('frequentRank: $frequentRank, ')
..write('recentRank: $recentRank, ')
..write('isDeleted: $isDeleted, ')
..write('updated: $updated, ')
..write('rowid: $rowid')
..write(')'))
.toString();
}
}
class AlbumsFts extends Table
with TableInfo<AlbumsFts, AlbumsFt>, VirtualTableInfo<AlbumsFts, AlbumsFt> {
@override
final GeneratedDatabase attachedDatabase;
final String? _alias;
AlbumsFts(this.attachedDatabase, [this._alias]);
static const VerificationMeta _sourceIdMeta =
const VerificationMeta('sourceId');
late final GeneratedColumn<String> sourceId = GeneratedColumn<String>(
'source_id', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: '');
static const VerificationMeta _nameMeta = const VerificationMeta('name');
late final GeneratedColumn<String> name = GeneratedColumn<String>(
'name', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: '');
@override
List<GeneratedColumn> get $columns => [sourceId, name];
@override
String get aliasedName => _alias ?? 'albums_fts';
@override
String get actualTableName => 'albums_fts';
@override
VerificationContext validateIntegrity(Insertable<AlbumsFt> instance,
{bool isInserting = false}) {
final context = VerificationContext();
final data = instance.toColumns(true);
if (data.containsKey('source_id')) {
context.handle(_sourceIdMeta,
sourceId.isAcceptableOrUnknown(data['source_id']!, _sourceIdMeta));
} else if (isInserting) {
context.missing(_sourceIdMeta);
}
if (data.containsKey('name')) {
context.handle(
_nameMeta, name.isAcceptableOrUnknown(data['name']!, _nameMeta));
} else if (isInserting) {
context.missing(_nameMeta);
}
return context;
}
@override
Set<GeneratedColumn> get $primaryKey => const {};
@override
AlbumsFt map(Map<String, dynamic> data, {String? tablePrefix}) {
final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : '';
return AlbumsFt(
sourceId: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}source_id'])!,
name: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}name'])!,
);
}
@override
AlbumsFts createAlias(String alias) {
return AlbumsFts(attachedDatabase, alias);
}
@override
bool get dontWriteConstraints => true;
@override
String get moduleAndArgs =>
'fts5(source_id, name, content=albums, content_rowid=rowid)';
}
class AlbumsFt extends DataClass implements Insertable<AlbumsFt> {
final String sourceId;
final String name;
const AlbumsFt({required this.sourceId, required this.name});
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
map['source_id'] = Variable<String>(sourceId);
map['name'] = Variable<String>(name);
return map;
}
AlbumsFtsCompanion toCompanion(bool nullToAbsent) {
return AlbumsFtsCompanion(
sourceId: Value(sourceId),
name: Value(name),
);
}
factory AlbumsFt.fromJson(Map<String, dynamic> json,
{ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return AlbumsFt(
sourceId: serializer.fromJson<String>(json['source_id']),
name: serializer.fromJson<String>(json['name']),
);
}
@override
Map<String, dynamic> toJson({ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return <String, dynamic>{
'source_id': serializer.toJson<String>(sourceId),
'name': serializer.toJson<String>(name),
};
}
AlbumsFt copyWith({String? sourceId, String? name}) => AlbumsFt(
sourceId: sourceId ?? this.sourceId,
name: name ?? this.name,
);
@override
String toString() {
return (StringBuffer('AlbumsFt(')
..write('sourceId: $sourceId, ')
..write('name: $name')
..write(')'))
.toString();
}
@override
int get hashCode => Object.hash(sourceId, name);
@override
bool operator ==(Object other) =>
identical(this, other) ||
(other is AlbumsFt &&
other.sourceId == this.sourceId &&
other.name == this.name);
}
class AlbumsFtsCompanion extends UpdateCompanion<AlbumsFt> {
final Value<String> sourceId;
final Value<String> name;
final Value<int> rowid;
const AlbumsFtsCompanion({
this.sourceId = const Value.absent(),
this.name = const Value.absent(),
this.rowid = const Value.absent(),
});
AlbumsFtsCompanion.insert({
required String sourceId,
required String name,
this.rowid = const Value.absent(),
}) : sourceId = Value(sourceId),
name = Value(name);
static Insertable<AlbumsFt> custom({
Expression<String>? sourceId,
Expression<String>? name,
Expression<int>? rowid,
}) {
return RawValuesInsertable({
if (sourceId != null) 'source_id': sourceId,
if (name != null) 'name': name,
if (rowid != null) 'rowid': rowid,
});
}
AlbumsFtsCompanion copyWith(
{Value<String>? sourceId, Value<String>? name, Value<int>? rowid}) {
return AlbumsFtsCompanion(
sourceId: sourceId ?? this.sourceId,
name: name ?? this.name,
rowid: rowid ?? this.rowid,
);
}
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
if (sourceId.present) {
map['source_id'] = Variable<String>(sourceId.value);
}
if (name.present) {
map['name'] = Variable<String>(name.value);
}
if (rowid.present) {
map['rowid'] = Variable<int>(rowid.value);
}
return map;
}
@override
String toString() {
return (StringBuffer('AlbumsFtsCompanion(')
..write('sourceId: $sourceId, ')
..write('name: $name, ')
..write('rowid: $rowid')
..write(')'))
.toString();
}
}
class Playlists extends Table with TableInfo<Playlists, Playlist> {
@override
final GeneratedDatabase attachedDatabase;
final String? _alias;
Playlists(this.attachedDatabase, [this._alias]);
static const VerificationMeta _sourceIdMeta =
const VerificationMeta('sourceId');
late final GeneratedColumn<int> sourceId = GeneratedColumn<int>(
'source_id', aliasedName, false,
type: DriftSqlType.int,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL');
static const VerificationMeta _idMeta = const VerificationMeta('id');
late final GeneratedColumn<String> id = GeneratedColumn<String>(
'id', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL');
static const VerificationMeta _nameMeta = const VerificationMeta('name');
late final GeneratedColumn<String> name = GeneratedColumn<String>(
'name', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL COLLATE NOCASE');
static const VerificationMeta _commentMeta =
const VerificationMeta('comment');
late final GeneratedColumn<String> comment = GeneratedColumn<String>(
'comment', aliasedName, true,
type: DriftSqlType.string,
requiredDuringInsert: false,
$customConstraints: 'COLLATE NOCASE');
static const VerificationMeta _coverArtMeta =
const VerificationMeta('coverArt');
late final GeneratedColumn<String> coverArt = GeneratedColumn<String>(
'cover_art', aliasedName, true,
type: DriftSqlType.string,
requiredDuringInsert: false,
$customConstraints: '');
static const VerificationMeta _songCountMeta =
const VerificationMeta('songCount');
late final GeneratedColumn<int> songCount = GeneratedColumn<int>(
'song_count', aliasedName, false,
type: DriftSqlType.int,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL');
static const VerificationMeta _createdMeta =
const VerificationMeta('created');
late final GeneratedColumn<DateTime> created = GeneratedColumn<DateTime>(
'created', aliasedName, false,
type: DriftSqlType.dateTime,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL');
static const VerificationMeta _updatedMeta =
const VerificationMeta('updated');
late final GeneratedColumn<DateTime> updated = GeneratedColumn<DateTime>(
'updated', aliasedName, false,
type: DriftSqlType.dateTime,
requiredDuringInsert: false,
$customConstraints:
'NOT NULL DEFAULT (strftime(\'%s\', CURRENT_TIMESTAMP))',
defaultValue:
const CustomExpression('strftime(\'%s\', CURRENT_TIMESTAMP)'));
@override
List<GeneratedColumn> get $columns =>
[sourceId, id, name, comment, coverArt, songCount, created, updated];
@override
String get aliasedName => _alias ?? 'playlists';
@override
String get actualTableName => 'playlists';
@override
VerificationContext validateIntegrity(Insertable<Playlist> instance,
{bool isInserting = false}) {
final context = VerificationContext();
final data = instance.toColumns(true);
if (data.containsKey('source_id')) {
context.handle(_sourceIdMeta,
sourceId.isAcceptableOrUnknown(data['source_id']!, _sourceIdMeta));
} else if (isInserting) {
context.missing(_sourceIdMeta);
}
if (data.containsKey('id')) {
context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta));
} else if (isInserting) {
context.missing(_idMeta);
}
if (data.containsKey('name')) {
context.handle(
_nameMeta, name.isAcceptableOrUnknown(data['name']!, _nameMeta));
} else if (isInserting) {
context.missing(_nameMeta);
}
if (data.containsKey('comment')) {
context.handle(_commentMeta,
comment.isAcceptableOrUnknown(data['comment']!, _commentMeta));
}
if (data.containsKey('cover_art')) {
context.handle(_coverArtMeta,
coverArt.isAcceptableOrUnknown(data['cover_art']!, _coverArtMeta));
}
if (data.containsKey('song_count')) {
context.handle(_songCountMeta,
songCount.isAcceptableOrUnknown(data['song_count']!, _songCountMeta));
} else if (isInserting) {
context.missing(_songCountMeta);
}
if (data.containsKey('created')) {
context.handle(_createdMeta,
created.isAcceptableOrUnknown(data['created']!, _createdMeta));
} else if (isInserting) {
context.missing(_createdMeta);
}
if (data.containsKey('updated')) {
context.handle(_updatedMeta,
updated.isAcceptableOrUnknown(data['updated']!, _updatedMeta));
}
return context;
}
@override
Set<GeneratedColumn> get $primaryKey => {sourceId, id};
@override
Playlist map(Map<String, dynamic> data, {String? tablePrefix}) {
final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : '';
return Playlist(
sourceId: attachedDatabase.typeMapping
.read(DriftSqlType.int, data['${effectivePrefix}source_id'])!,
id: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}id'])!,
name: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}name'])!,
comment: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}comment']),
coverArt: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}cover_art']),
songCount: attachedDatabase.typeMapping
.read(DriftSqlType.int, data['${effectivePrefix}song_count'])!,
created: attachedDatabase.typeMapping
.read(DriftSqlType.dateTime, data['${effectivePrefix}created'])!,
);
}
@override
Playlists createAlias(String alias) {
return Playlists(attachedDatabase, alias);
}
@override
List<String> get customConstraints => const [
'PRIMARY KEY(source_id, id)',
'FOREIGN KEY(source_id)REFERENCES sources(id)ON DELETE CASCADE'
];
@override
bool get dontWriteConstraints => true;
}
class PlaylistsCompanion extends UpdateCompanion<Playlist> {
final Value<int> sourceId;
final Value<String> id;
final Value<String> name;
final Value<String?> comment;
final Value<String?> coverArt;
final Value<int> songCount;
final Value<DateTime> created;
final Value<DateTime> updated;
final Value<int> rowid;
const PlaylistsCompanion({
this.sourceId = const Value.absent(),
this.id = const Value.absent(),
this.name = const Value.absent(),
this.comment = const Value.absent(),
this.coverArt = const Value.absent(),
this.songCount = const Value.absent(),
this.created = const Value.absent(),
this.updated = const Value.absent(),
this.rowid = const Value.absent(),
});
PlaylistsCompanion.insert({
required int sourceId,
required String id,
required String name,
this.comment = const Value.absent(),
this.coverArt = const Value.absent(),
required int songCount,
required DateTime created,
this.updated = const Value.absent(),
this.rowid = const Value.absent(),
}) : sourceId = Value(sourceId),
id = Value(id),
name = Value(name),
songCount = Value(songCount),
created = Value(created);
static Insertable<Playlist> custom({
Expression<int>? sourceId,
Expression<String>? id,
Expression<String>? name,
Expression<String>? comment,
Expression<String>? coverArt,
Expression<int>? songCount,
Expression<DateTime>? created,
Expression<DateTime>? updated,
Expression<int>? rowid,
}) {
return RawValuesInsertable({
if (sourceId != null) 'source_id': sourceId,
if (id != null) 'id': id,
if (name != null) 'name': name,
if (comment != null) 'comment': comment,
if (coverArt != null) 'cover_art': coverArt,
if (songCount != null) 'song_count': songCount,
if (created != null) 'created': created,
if (updated != null) 'updated': updated,
if (rowid != null) 'rowid': rowid,
});
}
PlaylistsCompanion copyWith(
{Value<int>? sourceId,
Value<String>? id,
Value<String>? name,
Value<String?>? comment,
Value<String?>? coverArt,
Value<int>? songCount,
Value<DateTime>? created,
Value<DateTime>? updated,
Value<int>? rowid}) {
return PlaylistsCompanion(
sourceId: sourceId ?? this.sourceId,
id: id ?? this.id,
name: name ?? this.name,
comment: comment ?? this.comment,
coverArt: coverArt ?? this.coverArt,
songCount: songCount ?? this.songCount,
created: created ?? this.created,
updated: updated ?? this.updated,
rowid: rowid ?? this.rowid,
);
}
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
if (sourceId.present) {
map['source_id'] = Variable<int>(sourceId.value);
}
if (id.present) {
map['id'] = Variable<String>(id.value);
}
if (name.present) {
map['name'] = Variable<String>(name.value);
}
if (comment.present) {
map['comment'] = Variable<String>(comment.value);
}
if (coverArt.present) {
map['cover_art'] = Variable<String>(coverArt.value);
}
if (songCount.present) {
map['song_count'] = Variable<int>(songCount.value);
}
if (created.present) {
map['created'] = Variable<DateTime>(created.value);
}
if (updated.present) {
map['updated'] = Variable<DateTime>(updated.value);
}
if (rowid.present) {
map['rowid'] = Variable<int>(rowid.value);
}
return map;
}
@override
String toString() {
return (StringBuffer('PlaylistsCompanion(')
..write('sourceId: $sourceId, ')
..write('id: $id, ')
..write('name: $name, ')
..write('comment: $comment, ')
..write('coverArt: $coverArt, ')
..write('songCount: $songCount, ')
..write('created: $created, ')
..write('updated: $updated, ')
..write('rowid: $rowid')
..write(')'))
.toString();
}
}
class PlaylistSongs extends Table with TableInfo<PlaylistSongs, PlaylistSong> {
@override
final GeneratedDatabase attachedDatabase;
final String? _alias;
PlaylistSongs(this.attachedDatabase, [this._alias]);
static const VerificationMeta _sourceIdMeta =
const VerificationMeta('sourceId');
late final GeneratedColumn<int> sourceId = GeneratedColumn<int>(
'source_id', aliasedName, false,
type: DriftSqlType.int,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL');
static const VerificationMeta _playlistIdMeta =
const VerificationMeta('playlistId');
late final GeneratedColumn<String> playlistId = GeneratedColumn<String>(
'playlist_id', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL');
static const VerificationMeta _songIdMeta = const VerificationMeta('songId');
late final GeneratedColumn<String> songId = GeneratedColumn<String>(
'song_id', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL');
static const VerificationMeta _positionMeta =
const VerificationMeta('position');
late final GeneratedColumn<int> position = GeneratedColumn<int>(
'position', aliasedName, false,
type: DriftSqlType.int,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL');
static const VerificationMeta _updatedMeta =
const VerificationMeta('updated');
late final GeneratedColumn<DateTime> updated = GeneratedColumn<DateTime>(
'updated', aliasedName, false,
type: DriftSqlType.dateTime,
requiredDuringInsert: false,
$customConstraints:
'NOT NULL DEFAULT (strftime(\'%s\', CURRENT_TIMESTAMP))',
defaultValue:
const CustomExpression('strftime(\'%s\', CURRENT_TIMESTAMP)'));
@override
List<GeneratedColumn> get $columns =>
[sourceId, playlistId, songId, position, updated];
@override
String get aliasedName => _alias ?? 'playlist_songs';
@override
String get actualTableName => 'playlist_songs';
@override
VerificationContext validateIntegrity(Insertable<PlaylistSong> instance,
{bool isInserting = false}) {
final context = VerificationContext();
final data = instance.toColumns(true);
if (data.containsKey('source_id')) {
context.handle(_sourceIdMeta,
sourceId.isAcceptableOrUnknown(data['source_id']!, _sourceIdMeta));
} else if (isInserting) {
context.missing(_sourceIdMeta);
}
if (data.containsKey('playlist_id')) {
context.handle(
_playlistIdMeta,
playlistId.isAcceptableOrUnknown(
data['playlist_id']!, _playlistIdMeta));
} else if (isInserting) {
context.missing(_playlistIdMeta);
}
if (data.containsKey('song_id')) {
context.handle(_songIdMeta,
songId.isAcceptableOrUnknown(data['song_id']!, _songIdMeta));
} else if (isInserting) {
context.missing(_songIdMeta);
}
if (data.containsKey('position')) {
context.handle(_positionMeta,
position.isAcceptableOrUnknown(data['position']!, _positionMeta));
} else if (isInserting) {
context.missing(_positionMeta);
}
if (data.containsKey('updated')) {
context.handle(_updatedMeta,
updated.isAcceptableOrUnknown(data['updated']!, _updatedMeta));
}
return context;
}
@override
Set<GeneratedColumn> get $primaryKey => {sourceId, playlistId, position};
@override
PlaylistSong map(Map<String, dynamic> data, {String? tablePrefix}) {
final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : '';
return PlaylistSong(
sourceId: attachedDatabase.typeMapping
.read(DriftSqlType.int, data['${effectivePrefix}source_id'])!,
playlistId: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}playlist_id'])!,
songId: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}song_id'])!,
position: attachedDatabase.typeMapping
.read(DriftSqlType.int, data['${effectivePrefix}position'])!,
updated: attachedDatabase.typeMapping
.read(DriftSqlType.dateTime, data['${effectivePrefix}updated'])!,
);
}
@override
PlaylistSongs createAlias(String alias) {
return PlaylistSongs(attachedDatabase, alias);
}
@override
List<String> get customConstraints => const [
'PRIMARY KEY(source_id, playlist_id, position)',
'FOREIGN KEY(source_id)REFERENCES sources(id)ON DELETE CASCADE'
];
@override
bool get dontWriteConstraints => true;
}
class PlaylistSong extends DataClass implements Insertable<PlaylistSong> {
final int sourceId;
final String playlistId;
final String songId;
final int position;
final DateTime updated;
const PlaylistSong(
{required this.sourceId,
required this.playlistId,
required this.songId,
required this.position,
required this.updated});
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
map['source_id'] = Variable<int>(sourceId);
map['playlist_id'] = Variable<String>(playlistId);
map['song_id'] = Variable<String>(songId);
map['position'] = Variable<int>(position);
map['updated'] = Variable<DateTime>(updated);
return map;
}
PlaylistSongsCompanion toCompanion(bool nullToAbsent) {
return PlaylistSongsCompanion(
sourceId: Value(sourceId),
playlistId: Value(playlistId),
songId: Value(songId),
position: Value(position),
updated: Value(updated),
);
}
factory PlaylistSong.fromJson(Map<String, dynamic> json,
{ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return PlaylistSong(
sourceId: serializer.fromJson<int>(json['source_id']),
playlistId: serializer.fromJson<String>(json['playlist_id']),
songId: serializer.fromJson<String>(json['song_id']),
position: serializer.fromJson<int>(json['position']),
updated: serializer.fromJson<DateTime>(json['updated']),
);
}
@override
Map<String, dynamic> toJson({ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return <String, dynamic>{
'source_id': serializer.toJson<int>(sourceId),
'playlist_id': serializer.toJson<String>(playlistId),
'song_id': serializer.toJson<String>(songId),
'position': serializer.toJson<int>(position),
'updated': serializer.toJson<DateTime>(updated),
};
}
PlaylistSong copyWith(
{int? sourceId,
String? playlistId,
String? songId,
int? position,
DateTime? updated}) =>
PlaylistSong(
sourceId: sourceId ?? this.sourceId,
playlistId: playlistId ?? this.playlistId,
songId: songId ?? this.songId,
position: position ?? this.position,
updated: updated ?? this.updated,
);
@override
String toString() {
return (StringBuffer('PlaylistSong(')
..write('sourceId: $sourceId, ')
..write('playlistId: $playlistId, ')
..write('songId: $songId, ')
..write('position: $position, ')
..write('updated: $updated')
..write(')'))
.toString();
}
@override
int get hashCode =>
Object.hash(sourceId, playlistId, songId, position, updated);
@override
bool operator ==(Object other) =>
identical(this, other) ||
(other is PlaylistSong &&
other.sourceId == this.sourceId &&
other.playlistId == this.playlistId &&
other.songId == this.songId &&
other.position == this.position &&
other.updated == this.updated);
}
class PlaylistSongsCompanion extends UpdateCompanion<PlaylistSong> {
final Value<int> sourceId;
final Value<String> playlistId;
final Value<String> songId;
final Value<int> position;
final Value<DateTime> updated;
final Value<int> rowid;
const PlaylistSongsCompanion({
this.sourceId = const Value.absent(),
this.playlistId = const Value.absent(),
this.songId = const Value.absent(),
this.position = const Value.absent(),
this.updated = const Value.absent(),
this.rowid = const Value.absent(),
});
PlaylistSongsCompanion.insert({
required int sourceId,
required String playlistId,
required String songId,
required int position,
this.updated = const Value.absent(),
this.rowid = const Value.absent(),
}) : sourceId = Value(sourceId),
playlistId = Value(playlistId),
songId = Value(songId),
position = Value(position);
static Insertable<PlaylistSong> custom({
Expression<int>? sourceId,
Expression<String>? playlistId,
Expression<String>? songId,
Expression<int>? position,
Expression<DateTime>? updated,
Expression<int>? rowid,
}) {
return RawValuesInsertable({
if (sourceId != null) 'source_id': sourceId,
if (playlistId != null) 'playlist_id': playlistId,
if (songId != null) 'song_id': songId,
if (position != null) 'position': position,
if (updated != null) 'updated': updated,
if (rowid != null) 'rowid': rowid,
});
}
PlaylistSongsCompanion copyWith(
{Value<int>? sourceId,
Value<String>? playlistId,
Value<String>? songId,
Value<int>? position,
Value<DateTime>? updated,
Value<int>? rowid}) {
return PlaylistSongsCompanion(
sourceId: sourceId ?? this.sourceId,
playlistId: playlistId ?? this.playlistId,
songId: songId ?? this.songId,
position: position ?? this.position,
updated: updated ?? this.updated,
rowid: rowid ?? this.rowid,
);
}
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
if (sourceId.present) {
map['source_id'] = Variable<int>(sourceId.value);
}
if (playlistId.present) {
map['playlist_id'] = Variable<String>(playlistId.value);
}
if (songId.present) {
map['song_id'] = Variable<String>(songId.value);
}
if (position.present) {
map['position'] = Variable<int>(position.value);
}
if (updated.present) {
map['updated'] = Variable<DateTime>(updated.value);
}
if (rowid.present) {
map['rowid'] = Variable<int>(rowid.value);
}
return map;
}
@override
String toString() {
return (StringBuffer('PlaylistSongsCompanion(')
..write('sourceId: $sourceId, ')
..write('playlistId: $playlistId, ')
..write('songId: $songId, ')
..write('position: $position, ')
..write('updated: $updated, ')
..write('rowid: $rowid')
..write(')'))
.toString();
}
}
class PlaylistsFts extends Table
with
TableInfo<PlaylistsFts, PlaylistsFt>,
VirtualTableInfo<PlaylistsFts, PlaylistsFt> {
@override
final GeneratedDatabase attachedDatabase;
final String? _alias;
PlaylistsFts(this.attachedDatabase, [this._alias]);
static const VerificationMeta _sourceIdMeta =
const VerificationMeta('sourceId');
late final GeneratedColumn<String> sourceId = GeneratedColumn<String>(
'source_id', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: '');
static const VerificationMeta _nameMeta = const VerificationMeta('name');
late final GeneratedColumn<String> name = GeneratedColumn<String>(
'name', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: '');
@override
List<GeneratedColumn> get $columns => [sourceId, name];
@override
String get aliasedName => _alias ?? 'playlists_fts';
@override
String get actualTableName => 'playlists_fts';
@override
VerificationContext validateIntegrity(Insertable<PlaylistsFt> instance,
{bool isInserting = false}) {
final context = VerificationContext();
final data = instance.toColumns(true);
if (data.containsKey('source_id')) {
context.handle(_sourceIdMeta,
sourceId.isAcceptableOrUnknown(data['source_id']!, _sourceIdMeta));
} else if (isInserting) {
context.missing(_sourceIdMeta);
}
if (data.containsKey('name')) {
context.handle(
_nameMeta, name.isAcceptableOrUnknown(data['name']!, _nameMeta));
} else if (isInserting) {
context.missing(_nameMeta);
}
return context;
}
@override
Set<GeneratedColumn> get $primaryKey => const {};
@override
PlaylistsFt map(Map<String, dynamic> data, {String? tablePrefix}) {
final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : '';
return PlaylistsFt(
sourceId: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}source_id'])!,
name: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}name'])!,
);
}
@override
PlaylistsFts createAlias(String alias) {
return PlaylistsFts(attachedDatabase, alias);
}
@override
bool get dontWriteConstraints => true;
@override
String get moduleAndArgs =>
'fts5(source_id, name, content=playlists, content_rowid=rowid)';
}
class PlaylistsFt extends DataClass implements Insertable<PlaylistsFt> {
final String sourceId;
final String name;
const PlaylistsFt({required this.sourceId, required this.name});
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
map['source_id'] = Variable<String>(sourceId);
map['name'] = Variable<String>(name);
return map;
}
PlaylistsFtsCompanion toCompanion(bool nullToAbsent) {
return PlaylistsFtsCompanion(
sourceId: Value(sourceId),
name: Value(name),
);
}
factory PlaylistsFt.fromJson(Map<String, dynamic> json,
{ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return PlaylistsFt(
sourceId: serializer.fromJson<String>(json['source_id']),
name: serializer.fromJson<String>(json['name']),
);
}
@override
Map<String, dynamic> toJson({ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return <String, dynamic>{
'source_id': serializer.toJson<String>(sourceId),
'name': serializer.toJson<String>(name),
};
}
PlaylistsFt copyWith({String? sourceId, String? name}) => PlaylistsFt(
sourceId: sourceId ?? this.sourceId,
name: name ?? this.name,
);
@override
String toString() {
return (StringBuffer('PlaylistsFt(')
..write('sourceId: $sourceId, ')
..write('name: $name')
..write(')'))
.toString();
}
@override
int get hashCode => Object.hash(sourceId, name);
@override
bool operator ==(Object other) =>
identical(this, other) ||
(other is PlaylistsFt &&
other.sourceId == this.sourceId &&
other.name == this.name);
}
class PlaylistsFtsCompanion extends UpdateCompanion<PlaylistsFt> {
final Value<String> sourceId;
final Value<String> name;
final Value<int> rowid;
const PlaylistsFtsCompanion({
this.sourceId = const Value.absent(),
this.name = const Value.absent(),
this.rowid = const Value.absent(),
});
PlaylistsFtsCompanion.insert({
required String sourceId,
required String name,
this.rowid = const Value.absent(),
}) : sourceId = Value(sourceId),
name = Value(name);
static Insertable<PlaylistsFt> custom({
Expression<String>? sourceId,
Expression<String>? name,
Expression<int>? rowid,
}) {
return RawValuesInsertable({
if (sourceId != null) 'source_id': sourceId,
if (name != null) 'name': name,
if (rowid != null) 'rowid': rowid,
});
}
PlaylistsFtsCompanion copyWith(
{Value<String>? sourceId, Value<String>? name, Value<int>? rowid}) {
return PlaylistsFtsCompanion(
sourceId: sourceId ?? this.sourceId,
name: name ?? this.name,
rowid: rowid ?? this.rowid,
);
}
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
if (sourceId.present) {
map['source_id'] = Variable<String>(sourceId.value);
}
if (name.present) {
map['name'] = Variable<String>(name.value);
}
if (rowid.present) {
map['rowid'] = Variable<int>(rowid.value);
}
return map;
}
@override
String toString() {
return (StringBuffer('PlaylistsFtsCompanion(')
..write('sourceId: $sourceId, ')
..write('name: $name, ')
..write('rowid: $rowid')
..write(')'))
.toString();
}
}
class Songs extends Table with TableInfo<Songs, Song> {
@override
final GeneratedDatabase attachedDatabase;
final String? _alias;
Songs(this.attachedDatabase, [this._alias]);
static const VerificationMeta _sourceIdMeta =
const VerificationMeta('sourceId');
late final GeneratedColumn<int> sourceId = GeneratedColumn<int>(
'source_id', aliasedName, false,
type: DriftSqlType.int,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL');
static const VerificationMeta _idMeta = const VerificationMeta('id');
late final GeneratedColumn<String> id = GeneratedColumn<String>(
'id', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL');
static const VerificationMeta _albumIdMeta =
const VerificationMeta('albumId');
late final GeneratedColumn<String> albumId = GeneratedColumn<String>(
'album_id', aliasedName, true,
type: DriftSqlType.string,
requiredDuringInsert: false,
$customConstraints: '');
static const VerificationMeta _artistIdMeta =
const VerificationMeta('artistId');
late final GeneratedColumn<String> artistId = GeneratedColumn<String>(
'artist_id', aliasedName, true,
type: DriftSqlType.string,
requiredDuringInsert: false,
$customConstraints: '');
static const VerificationMeta _titleMeta = const VerificationMeta('title');
late final GeneratedColumn<String> title = GeneratedColumn<String>(
'title', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: 'NOT NULL COLLATE NOCASE');
static const VerificationMeta _albumMeta = const VerificationMeta('album');
late final GeneratedColumn<String> album = GeneratedColumn<String>(
'album', aliasedName, true,
type: DriftSqlType.string,
requiredDuringInsert: false,
$customConstraints: 'COLLATE NOCASE');
static const VerificationMeta _artistMeta = const VerificationMeta('artist');
late final GeneratedColumn<String> artist = GeneratedColumn<String>(
'artist', aliasedName, true,
type: DriftSqlType.string,
requiredDuringInsert: false,
$customConstraints: 'COLLATE NOCASE');
static const VerificationMeta _durationMeta =
const VerificationMeta('duration');
late final GeneratedColumnWithTypeConverter<Duration?, int> duration =
GeneratedColumn<int>('duration', aliasedName, true,
type: DriftSqlType.int,
requiredDuringInsert: false,
$customConstraints: '')
.withConverter<Duration?>(Songs.$converterdurationn);
static const VerificationMeta _trackMeta = const VerificationMeta('track');
late final GeneratedColumn<int> track = GeneratedColumn<int>(
'track', aliasedName, true,
type: DriftSqlType.int,
requiredDuringInsert: false,
$customConstraints: '');
static const VerificationMeta _discMeta = const VerificationMeta('disc');
late final GeneratedColumn<int> disc = GeneratedColumn<int>(
'disc', aliasedName, true,
type: DriftSqlType.int,
requiredDuringInsert: false,
$customConstraints: '');
static const VerificationMeta _starredMeta =
const VerificationMeta('starred');
late final GeneratedColumn<DateTime> starred = GeneratedColumn<DateTime>(
'starred', aliasedName, true,
type: DriftSqlType.dateTime,
requiredDuringInsert: false,
$customConstraints: '');
static const VerificationMeta _genreMeta = const VerificationMeta('genre');
late final GeneratedColumn<String> genre = GeneratedColumn<String>(
'genre', aliasedName, true,
type: DriftSqlType.string,
requiredDuringInsert: false,
$customConstraints: '');
static const VerificationMeta _downloadTaskIdMeta =
const VerificationMeta('downloadTaskId');
late final GeneratedColumn<String> downloadTaskId = GeneratedColumn<String>(
'download_task_id', aliasedName, true,
type: DriftSqlType.string,
requiredDuringInsert: false,
$customConstraints: 'UNIQUE');
static const VerificationMeta _downloadFilePathMeta =
const VerificationMeta('downloadFilePath');
late final GeneratedColumn<String> downloadFilePath = GeneratedColumn<String>(
'download_file_path', aliasedName, true,
type: DriftSqlType.string,
requiredDuringInsert: false,
$customConstraints: 'UNIQUE');
static const VerificationMeta _isDeletedMeta =
const VerificationMeta('isDeleted');
late final GeneratedColumn<bool> isDeleted = GeneratedColumn<bool>(
'is_deleted', aliasedName, false,
type: DriftSqlType.bool,
requiredDuringInsert: false,
$customConstraints: 'NOT NULL DEFAULT 0',
defaultValue: const CustomExpression('0'));
static const VerificationMeta _updatedMeta =
const VerificationMeta('updated');
late final GeneratedColumn<DateTime> updated = GeneratedColumn<DateTime>(
'updated', aliasedName, false,
type: DriftSqlType.dateTime,
requiredDuringInsert: false,
$customConstraints:
'NOT NULL DEFAULT (strftime(\'%s\', CURRENT_TIMESTAMP))',
defaultValue:
const CustomExpression('strftime(\'%s\', CURRENT_TIMESTAMP)'));
@override
List<GeneratedColumn> get $columns => [
sourceId,
id,
albumId,
artistId,
title,
album,
artist,
duration,
track,
disc,
starred,
genre,
downloadTaskId,
downloadFilePath,
isDeleted,
updated
];
@override
String get aliasedName => _alias ?? 'songs';
@override
String get actualTableName => 'songs';
@override
VerificationContext validateIntegrity(Insertable<Song> instance,
{bool isInserting = false}) {
final context = VerificationContext();
final data = instance.toColumns(true);
if (data.containsKey('source_id')) {
context.handle(_sourceIdMeta,
sourceId.isAcceptableOrUnknown(data['source_id']!, _sourceIdMeta));
} else if (isInserting) {
context.missing(_sourceIdMeta);
}
if (data.containsKey('id')) {
context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta));
} else if (isInserting) {
context.missing(_idMeta);
}
if (data.containsKey('album_id')) {
context.handle(_albumIdMeta,
albumId.isAcceptableOrUnknown(data['album_id']!, _albumIdMeta));
}
if (data.containsKey('artist_id')) {
context.handle(_artistIdMeta,
artistId.isAcceptableOrUnknown(data['artist_id']!, _artistIdMeta));
}
if (data.containsKey('title')) {
context.handle(
_titleMeta, title.isAcceptableOrUnknown(data['title']!, _titleMeta));
} else if (isInserting) {
context.missing(_titleMeta);
}
if (data.containsKey('album')) {
context.handle(
_albumMeta, album.isAcceptableOrUnknown(data['album']!, _albumMeta));
}
if (data.containsKey('artist')) {
context.handle(_artistMeta,
artist.isAcceptableOrUnknown(data['artist']!, _artistMeta));
}
context.handle(_durationMeta, const VerificationResult.success());
if (data.containsKey('track')) {
context.handle(
_trackMeta, track.isAcceptableOrUnknown(data['track']!, _trackMeta));
}
if (data.containsKey('disc')) {
context.handle(
_discMeta, disc.isAcceptableOrUnknown(data['disc']!, _discMeta));
}
if (data.containsKey('starred')) {
context.handle(_starredMeta,
starred.isAcceptableOrUnknown(data['starred']!, _starredMeta));
}
if (data.containsKey('genre')) {
context.handle(
_genreMeta, genre.isAcceptableOrUnknown(data['genre']!, _genreMeta));
}
if (data.containsKey('download_task_id')) {
context.handle(
_downloadTaskIdMeta,
downloadTaskId.isAcceptableOrUnknown(
data['download_task_id']!, _downloadTaskIdMeta));
}
if (data.containsKey('download_file_path')) {
context.handle(
_downloadFilePathMeta,
downloadFilePath.isAcceptableOrUnknown(
data['download_file_path']!, _downloadFilePathMeta));
}
if (data.containsKey('is_deleted')) {
context.handle(_isDeletedMeta,
isDeleted.isAcceptableOrUnknown(data['is_deleted']!, _isDeletedMeta));
}
if (data.containsKey('updated')) {
context.handle(_updatedMeta,
updated.isAcceptableOrUnknown(data['updated']!, _updatedMeta));
}
return context;
}
@override
Set<GeneratedColumn> get $primaryKey => {sourceId, id};
@override
Song map(Map<String, dynamic> data, {String? tablePrefix}) {
final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : '';
return Song(
sourceId: attachedDatabase.typeMapping
.read(DriftSqlType.int, data['${effectivePrefix}source_id'])!,
id: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}id'])!,
albumId: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}album_id']),
artistId: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}artist_id']),
title: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}title'])!,
artist: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}artist']),
album: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}album']),
duration: Songs.$converterdurationn.fromSql(attachedDatabase.typeMapping
.read(DriftSqlType.int, data['${effectivePrefix}duration'])),
track: attachedDatabase.typeMapping
.read(DriftSqlType.int, data['${effectivePrefix}track']),
disc: attachedDatabase.typeMapping
.read(DriftSqlType.int, data['${effectivePrefix}disc']),
starred: attachedDatabase.typeMapping
.read(DriftSqlType.dateTime, data['${effectivePrefix}starred']),
genre: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}genre']),
downloadTaskId: attachedDatabase.typeMapping.read(
DriftSqlType.string, data['${effectivePrefix}download_task_id']),
downloadFilePath: attachedDatabase.typeMapping.read(
DriftSqlType.string, data['${effectivePrefix}download_file_path']),
isDeleted: attachedDatabase.typeMapping
.read(DriftSqlType.bool, data['${effectivePrefix}is_deleted'])!,
);
}
@override
Songs createAlias(String alias) {
return Songs(attachedDatabase, alias);
}
static TypeConverter<Duration, int> $converterduration =
const DurationSecondsConverter();
static TypeConverter<Duration?, int?> $converterdurationn =
NullAwareTypeConverter.wrap($converterduration);
@override
List<String> get customConstraints => const [
'PRIMARY KEY(source_id, id)',
'FOREIGN KEY(source_id)REFERENCES sources(id)ON DELETE CASCADE'
];
@override
bool get dontWriteConstraints => true;
}
class SongsCompanion extends UpdateCompanion<Song> {
final Value<int> sourceId;
final Value<String> id;
final Value<String?> albumId;
final Value<String?> artistId;
final Value<String> title;
final Value<String?> album;
final Value<String?> artist;
final Value<Duration?> duration;
final Value<int?> track;
final Value<int?> disc;
final Value<DateTime?> starred;
final Value<String?> genre;
final Value<String?> downloadTaskId;
final Value<String?> downloadFilePath;
final Value<bool> isDeleted;
final Value<DateTime> updated;
final Value<int> rowid;
const SongsCompanion({
this.sourceId = const Value.absent(),
this.id = const Value.absent(),
this.albumId = const Value.absent(),
this.artistId = const Value.absent(),
this.title = const Value.absent(),
this.album = const Value.absent(),
this.artist = const Value.absent(),
this.duration = const Value.absent(),
this.track = const Value.absent(),
this.disc = const Value.absent(),
this.starred = const Value.absent(),
this.genre = const Value.absent(),
this.downloadTaskId = const Value.absent(),
this.downloadFilePath = const Value.absent(),
this.isDeleted = const Value.absent(),
this.updated = const Value.absent(),
this.rowid = const Value.absent(),
});
SongsCompanion.insert({
required int sourceId,
required String id,
this.albumId = const Value.absent(),
this.artistId = const Value.absent(),
required String title,
this.album = const Value.absent(),
this.artist = const Value.absent(),
this.duration = const Value.absent(),
this.track = const Value.absent(),
this.disc = const Value.absent(),
this.starred = const Value.absent(),
this.genre = const Value.absent(),
this.downloadTaskId = const Value.absent(),
this.downloadFilePath = const Value.absent(),
this.isDeleted = const Value.absent(),
this.updated = const Value.absent(),
this.rowid = const Value.absent(),
}) : sourceId = Value(sourceId),
id = Value(id),
title = Value(title);
static Insertable<Song> custom({
Expression<int>? sourceId,
Expression<String>? id,
Expression<String>? albumId,
Expression<String>? artistId,
Expression<String>? title,
Expression<String>? album,
Expression<String>? artist,
Expression<int>? duration,
Expression<int>? track,
Expression<int>? disc,
Expression<DateTime>? starred,
Expression<String>? genre,
Expression<String>? downloadTaskId,
Expression<String>? downloadFilePath,
Expression<bool>? isDeleted,
Expression<DateTime>? updated,
Expression<int>? rowid,
}) {
return RawValuesInsertable({
if (sourceId != null) 'source_id': sourceId,
if (id != null) 'id': id,
if (albumId != null) 'album_id': albumId,
if (artistId != null) 'artist_id': artistId,
if (title != null) 'title': title,
if (album != null) 'album': album,
if (artist != null) 'artist': artist,
if (duration != null) 'duration': duration,
if (track != null) 'track': track,
if (disc != null) 'disc': disc,
if (starred != null) 'starred': starred,
if (genre != null) 'genre': genre,
if (downloadTaskId != null) 'download_task_id': downloadTaskId,
if (downloadFilePath != null) 'download_file_path': downloadFilePath,
if (isDeleted != null) 'is_deleted': isDeleted,
if (updated != null) 'updated': updated,
if (rowid != null) 'rowid': rowid,
});
}
SongsCompanion copyWith(
{Value<int>? sourceId,
Value<String>? id,
Value<String?>? albumId,
Value<String?>? artistId,
Value<String>? title,
Value<String?>? album,
Value<String?>? artist,
Value<Duration?>? duration,
Value<int?>? track,
Value<int?>? disc,
Value<DateTime?>? starred,
Value<String?>? genre,
Value<String?>? downloadTaskId,
Value<String?>? downloadFilePath,
Value<bool>? isDeleted,
Value<DateTime>? updated,
Value<int>? rowid}) {
return SongsCompanion(
sourceId: sourceId ?? this.sourceId,
id: id ?? this.id,
albumId: albumId ?? this.albumId,
artistId: artistId ?? this.artistId,
title: title ?? this.title,
album: album ?? this.album,
artist: artist ?? this.artist,
duration: duration ?? this.duration,
track: track ?? this.track,
disc: disc ?? this.disc,
starred: starred ?? this.starred,
genre: genre ?? this.genre,
downloadTaskId: downloadTaskId ?? this.downloadTaskId,
downloadFilePath: downloadFilePath ?? this.downloadFilePath,
isDeleted: isDeleted ?? this.isDeleted,
updated: updated ?? this.updated,
rowid: rowid ?? this.rowid,
);
}
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
if (sourceId.present) {
map['source_id'] = Variable<int>(sourceId.value);
}
if (id.present) {
map['id'] = Variable<String>(id.value);
}
if (albumId.present) {
map['album_id'] = Variable<String>(albumId.value);
}
if (artistId.present) {
map['artist_id'] = Variable<String>(artistId.value);
}
if (title.present) {
map['title'] = Variable<String>(title.value);
}
if (album.present) {
map['album'] = Variable<String>(album.value);
}
if (artist.present) {
map['artist'] = Variable<String>(artist.value);
}
if (duration.present) {
final converter = Songs.$converterdurationn;
map['duration'] = Variable<int>(converter.toSql(duration.value));
}
if (track.present) {
map['track'] = Variable<int>(track.value);
}
if (disc.present) {
map['disc'] = Variable<int>(disc.value);
}
if (starred.present) {
map['starred'] = Variable<DateTime>(starred.value);
}
if (genre.present) {
map['genre'] = Variable<String>(genre.value);
}
if (downloadTaskId.present) {
map['download_task_id'] = Variable<String>(downloadTaskId.value);
}
if (downloadFilePath.present) {
map['download_file_path'] = Variable<String>(downloadFilePath.value);
}
if (isDeleted.present) {
map['is_deleted'] = Variable<bool>(isDeleted.value);
}
if (updated.present) {
map['updated'] = Variable<DateTime>(updated.value);
}
if (rowid.present) {
map['rowid'] = Variable<int>(rowid.value);
}
return map;
}
@override
String toString() {
return (StringBuffer('SongsCompanion(')
..write('sourceId: $sourceId, ')
..write('id: $id, ')
..write('albumId: $albumId, ')
..write('artistId: $artistId, ')
..write('title: $title, ')
..write('album: $album, ')
..write('artist: $artist, ')
..write('duration: $duration, ')
..write('track: $track, ')
..write('disc: $disc, ')
..write('starred: $starred, ')
..write('genre: $genre, ')
..write('downloadTaskId: $downloadTaskId, ')
..write('downloadFilePath: $downloadFilePath, ')
..write('isDeleted: $isDeleted, ')
..write('updated: $updated, ')
..write('rowid: $rowid')
..write(')'))
.toString();
}
}
class SongsFts extends Table
with TableInfo<SongsFts, SongsFt>, VirtualTableInfo<SongsFts, SongsFt> {
@override
final GeneratedDatabase attachedDatabase;
final String? _alias;
SongsFts(this.attachedDatabase, [this._alias]);
static const VerificationMeta _sourceIdMeta =
const VerificationMeta('sourceId');
late final GeneratedColumn<String> sourceId = GeneratedColumn<String>(
'source_id', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: '');
static const VerificationMeta _titleMeta = const VerificationMeta('title');
late final GeneratedColumn<String> title = GeneratedColumn<String>(
'title', aliasedName, false,
type: DriftSqlType.string,
requiredDuringInsert: true,
$customConstraints: '');
@override
List<GeneratedColumn> get $columns => [sourceId, title];
@override
String get aliasedName => _alias ?? 'songs_fts';
@override
String get actualTableName => 'songs_fts';
@override
VerificationContext validateIntegrity(Insertable<SongsFt> instance,
{bool isInserting = false}) {
final context = VerificationContext();
final data = instance.toColumns(true);
if (data.containsKey('source_id')) {
context.handle(_sourceIdMeta,
sourceId.isAcceptableOrUnknown(data['source_id']!, _sourceIdMeta));
} else if (isInserting) {
context.missing(_sourceIdMeta);
}
if (data.containsKey('title')) {
context.handle(
_titleMeta, title.isAcceptableOrUnknown(data['title']!, _titleMeta));
} else if (isInserting) {
context.missing(_titleMeta);
}
return context;
}
@override
Set<GeneratedColumn> get $primaryKey => const {};
@override
SongsFt map(Map<String, dynamic> data, {String? tablePrefix}) {
final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : '';
return SongsFt(
sourceId: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}source_id'])!,
title: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}title'])!,
);
}
@override
SongsFts createAlias(String alias) {
return SongsFts(attachedDatabase, alias);
}
@override
bool get dontWriteConstraints => true;
@override
String get moduleAndArgs =>
'fts5(source_id, title, content=songs, content_rowid=rowid)';
}
class SongsFt extends DataClass implements Insertable<SongsFt> {
final String sourceId;
final String title;
const SongsFt({required this.sourceId, required this.title});
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
map['source_id'] = Variable<String>(sourceId);
map['title'] = Variable<String>(title);
return map;
}
SongsFtsCompanion toCompanion(bool nullToAbsent) {
return SongsFtsCompanion(
sourceId: Value(sourceId),
title: Value(title),
);
}
factory SongsFt.fromJson(Map<String, dynamic> json,
{ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return SongsFt(
sourceId: serializer.fromJson<String>(json['source_id']),
title: serializer.fromJson<String>(json['title']),
);
}
@override
Map<String, dynamic> toJson({ValueSerializer? serializer}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return <String, dynamic>{
'source_id': serializer.toJson<String>(sourceId),
'title': serializer.toJson<String>(title),
};
}
SongsFt copyWith({String? sourceId, String? title}) => SongsFt(
sourceId: sourceId ?? this.sourceId,
title: title ?? this.title,
);
@override
String toString() {
return (StringBuffer('SongsFt(')
..write('sourceId: $sourceId, ')
..write('title: $title')
..write(')'))
.toString();
}
@override
int get hashCode => Object.hash(sourceId, title);
@override
bool operator ==(Object other) =>
identical(this, other) ||
(other is SongsFt &&
other.sourceId == this.sourceId &&
other.title == this.title);
}
class SongsFtsCompanion extends UpdateCompanion<SongsFt> {
final Value<String> sourceId;
final Value<String> title;
final Value<int> rowid;
const SongsFtsCompanion({
this.sourceId = const Value.absent(),
this.title = const Value.absent(),
this.rowid = const Value.absent(),
});
SongsFtsCompanion.insert({
required String sourceId,
required String title,
this.rowid = const Value.absent(),
}) : sourceId = Value(sourceId),
title = Value(title);
static Insertable<SongsFt> custom({
Expression<String>? sourceId,
Expression<String>? title,
Expression<int>? rowid,
}) {
return RawValuesInsertable({
if (sourceId != null) 'source_id': sourceId,
if (title != null) 'title': title,
if (rowid != null) 'rowid': rowid,
});
}
SongsFtsCompanion copyWith(
{Value<String>? sourceId, Value<String>? title, Value<int>? rowid}) {
return SongsFtsCompanion(
sourceId: sourceId ?? this.sourceId,
title: title ?? this.title,
rowid: rowid ?? this.rowid,
);
}
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
if (sourceId.present) {
map['source_id'] = Variable<String>(sourceId.value);
}
if (title.present) {
map['title'] = Variable<String>(title.value);
}
if (rowid.present) {
map['rowid'] = Variable<int>(rowid.value);
}
return map;
}
@override
String toString() {
return (StringBuffer('SongsFtsCompanion(')
..write('sourceId: $sourceId, ')
..write('title: $title, ')
..write('rowid: $rowid')
..write(')'))
.toString();
}
}
abstract class _$SubtracksDatabase extends GeneratedDatabase {
_$SubtracksDatabase(QueryExecutor e) : super(e);
late final Queue queue = Queue(this);
late final Index queueIndex =
Index('queue_index', 'CREATE INDEX queue_index ON queue ("index")');
late final Index queueCurrentTrack = Index('queue_current_track',
'CREATE INDEX queue_current_track ON queue (current_track)');
late final LastAudioState lastAudioState = LastAudioState(this);
late final LastBottomNavState lastBottomNavState = LastBottomNavState(this);
late final LastLibraryState lastLibraryState = LastLibraryState(this);
late final AppSettingsTable appSettings = AppSettingsTable(this);
late final Sources sources = Sources(this);
late final SubsonicSources subsonicSources = SubsonicSources(this);
late final Artists artists = Artists(this);
late final Index artistsSourceId = Index('artists_source_id',
'CREATE INDEX artists_source_id ON artists (source_id)');
late final ArtistsFts artistsFts = ArtistsFts(this);
late final Trigger artistsAi = Trigger(
'CREATE TRIGGER artists_ai AFTER INSERT ON artists BEGIN INSERT INTO artists_fts ("rowid", source_id, name) VALUES (new."rowid", new.source_id, new.name);END',
'artists_ai');
late final Trigger artistsAd = Trigger(
'CREATE TRIGGER artists_ad AFTER DELETE ON artists BEGIN INSERT INTO artists_fts (artists_fts, "rowid", source_id, name) VALUES (\'delete\', old."rowid", old.source_id, old.name);END',
'artists_ad');
late final Trigger artistsAu = Trigger(
'CREATE TRIGGER artists_au AFTER UPDATE ON artists BEGIN INSERT INTO artists_fts (artists_fts, "rowid", source_id, name) VALUES (\'delete\', old."rowid", old.source_id, old.name);INSERT INTO artists_fts ("rowid", source_id, name) VALUES (new."rowid", new.source_id, new.name);END',
'artists_au');
late final Albums albums = Albums(this);
late final Index albumsSourceId = Index('albums_source_id',
'CREATE INDEX albums_source_id ON albums (source_id)');
late final Index albumsSourceIdArtistIdIdx = Index(
'albums_source_id_artist_id_idx',
'CREATE INDEX albums_source_id_artist_id_idx ON albums (source_id, artist_id)');
late final AlbumsFts albumsFts = AlbumsFts(this);
late final Trigger albumsAi = Trigger(
'CREATE TRIGGER albums_ai AFTER INSERT ON albums BEGIN INSERT INTO albums_fts ("rowid", source_id, name) VALUES (new."rowid", new.source_id, new.name);END',
'albums_ai');
late final Trigger albumsAd = Trigger(
'CREATE TRIGGER albums_ad AFTER DELETE ON albums BEGIN INSERT INTO albums_fts (albums_fts, "rowid", source_id, name) VALUES (\'delete\', old."rowid", old.source_id, old.name);END',
'albums_ad');
late final Trigger albumsAu = Trigger(
'CREATE TRIGGER albums_au AFTER UPDATE ON albums BEGIN INSERT INTO albums_fts (albums_fts, "rowid", source_id, name) VALUES (\'delete\', old."rowid", old.source_id, old.name);INSERT INTO albums_fts ("rowid", source_id, name) VALUES (new."rowid", new.source_id, new.name);END',
'albums_au');
late final Playlists playlists = Playlists(this);
late final Index playlistsSourceId = Index('playlists_source_id',
'CREATE INDEX playlists_source_id ON playlists (source_id)');
late final PlaylistSongs playlistSongs = PlaylistSongs(this);
late final Index playlistSongsSourceIdPlaylistIdIdx = Index(
'playlist_songs_source_id_playlist_id_idx',
'CREATE INDEX playlist_songs_source_id_playlist_id_idx ON playlist_songs (source_id, playlist_id)');
late final Index playlistSongsSourceIdSongIdIdx = Index(
'playlist_songs_source_id_song_id_idx',
'CREATE INDEX playlist_songs_source_id_song_id_idx ON playlist_songs (source_id, song_id)');
late final PlaylistsFts playlistsFts = PlaylistsFts(this);
late final Trigger playlistsAi = Trigger(
'CREATE TRIGGER playlists_ai AFTER INSERT ON playlists BEGIN INSERT INTO playlists_fts ("rowid", source_id, name) VALUES (new."rowid", new.source_id, new.name);END',
'playlists_ai');
late final Trigger playlistsAd = Trigger(
'CREATE TRIGGER playlists_ad AFTER DELETE ON playlists BEGIN INSERT INTO playlists_fts (playlists_fts, "rowid", source_id, name) VALUES (\'delete\', old."rowid", old.source_id, old.name);END',
'playlists_ad');
late final Trigger playlistsAu = Trigger(
'CREATE TRIGGER playlists_au AFTER UPDATE ON playlists BEGIN INSERT INTO playlists_fts (playlists_fts, "rowid", source_id, name) VALUES (\'delete\', old."rowid", old.source_id, old.name);INSERT INTO playlists_fts ("rowid", source_id, name) VALUES (new."rowid", new.source_id, new.name);END',
'playlists_au');
late final Songs songs = Songs(this);
late final Index songsSourceIdAlbumIdIdx = Index(
'songs_source_id_album_id_idx',
'CREATE INDEX songs_source_id_album_id_idx ON songs (source_id, album_id)');
late final Index songsSourceIdArtistIdIdx = Index(
'songs_source_id_artist_id_idx',
'CREATE INDEX songs_source_id_artist_id_idx ON songs (source_id, artist_id)');
late final Index songsDownloadTaskIdIdx = Index('songs_download_task_id_idx',
'CREATE INDEX songs_download_task_id_idx ON songs (download_task_id)');
late final SongsFts songsFts = SongsFts(this);
late final Trigger songsAi = Trigger(
'CREATE TRIGGER songs_ai AFTER INSERT ON songs BEGIN INSERT INTO songs_fts ("rowid", source_id, title) VALUES (new."rowid", new.source_id, new.title);END',
'songs_ai');
late final Trigger songsAd = Trigger(
'CREATE TRIGGER songs_ad AFTER DELETE ON songs BEGIN INSERT INTO songs_fts (songs_fts, "rowid", source_id, title) VALUES (\'delete\', old."rowid", old.source_id, old.title);END',
'songs_ad');
late final Trigger songsAu = Trigger(
'CREATE TRIGGER songs_au AFTER UPDATE ON songs BEGIN INSERT INTO songs_fts (songs_fts, "rowid", source_id, title) VALUES (\'delete\', old."rowid", old.source_id, old.title);INSERT INTO songs_fts ("rowid", source_id, title) VALUES (new."rowid", new.source_id, new.title);END',
'songs_au');
Selectable<int> sourcesCount() {
return customSelect('SELECT COUNT(*) AS _c0 FROM sources',
variables: [],
readsFrom: {
sources,
}).map((QueryRow row) => row.read<int>('_c0'));
}
Selectable<SubsonicSettings> allSubsonicSources() {
return customSelect(
'SELECT sources.id, sources.name, sources.address, sources.is_active, sources.created_at, subsonic_sources.features, subsonic_sources.username, subsonic_sources.password, subsonic_sources.use_token_auth FROM sources JOIN subsonic_sources ON subsonic_sources.source_id = sources.id',
variables: [],
readsFrom: {
sources,
subsonicSources,
}).map((QueryRow row) => SubsonicSettings(
id: row.read<int>('id'),
features: SubsonicSources.$converterfeatures
.fromSql(row.read<String>('features')),
name: row.read<String>('name'),
address:
Sources.$converteraddress.fromSql(row.read<String>('address')),
isActive: row.readNullable<bool>('is_active'),
createdAt: row.read<DateTime>('created_at'),
username: row.read<String>('username'),
password: row.read<String>('password'),
useTokenAuth: row.read<bool>('use_token_auth'),
));
}
Selectable<String> albumIdsWithDownloaded(int sourceId) {
return customSelect(
'SELECT albums.id FROM albums JOIN songs ON songs.source_id = albums.source_id AND songs.album_id = albums.id WHERE albums.source_id = ?1 AND(songs.download_file_path IS NOT NULL OR songs.download_task_id IS NOT NULL)GROUP BY albums.id',
variables: [
Variable<int>(sourceId)
],
readsFrom: {
albums,
songs,
}).map((QueryRow row) => row.read<String>('id'));
}
Selectable<int> searchArtists(String query, int limit, int offset) {
return customSelect(
'SELECT "rowid" FROM artists_fts WHERE artists_fts MATCH ?1 ORDER BY rank LIMIT ?2 OFFSET ?3',
variables: [
Variable<String>(query),
Variable<int>(limit),
Variable<int>(offset)
],
readsFrom: {
artistsFts,
}).map((QueryRow row) => row.read<int>('rowid'));
}
Selectable<int> searchAlbums(String query, int limit, int offset) {
return customSelect(
'SELECT "rowid" FROM albums_fts WHERE albums_fts MATCH ?1 ORDER BY rank LIMIT ?2 OFFSET ?3',
variables: [
Variable<String>(query),
Variable<int>(limit),
Variable<int>(offset)
],
readsFrom: {
albumsFts,
}).map((QueryRow row) => row.read<int>('rowid'));
}
Selectable<int> searchPlaylists(String query, int limit, int offset) {
return customSelect(
'SELECT "rowid" FROM playlists_fts WHERE playlists_fts MATCH ?1 ORDER BY rank LIMIT ?2 OFFSET ?3',
variables: [
Variable<String>(query),
Variable<int>(limit),
Variable<int>(offset)
],
readsFrom: {
playlistsFts,
}).map((QueryRow row) => row.read<int>('rowid'));
}
Selectable<int> searchSongs(String query, int limit, int offset) {
return customSelect(
'SELECT "rowid" FROM songs_fts WHERE songs_fts MATCH ?1 ORDER BY rank LIMIT ?2 OFFSET ?3',
variables: [
Variable<String>(query),
Variable<int>(limit),
Variable<int>(offset)
],
readsFrom: {
songsFts,
}).map((QueryRow row) => row.read<int>('rowid'));
}
Selectable<Artist> artistById(int sourceId, String id) {
return customSelect(
'SELECT * FROM artists WHERE source_id = ?1 AND id = ?2',
variables: [
Variable<int>(sourceId),
Variable<String>(id)
],
readsFrom: {
artists,
}).asyncMap(artists.mapFromRow);
}
Selectable<Album> albumById(int sourceId, String id) {
return customSelect('SELECT * FROM albums WHERE source_id = ?1 AND id = ?2',
variables: [
Variable<int>(sourceId),
Variable<String>(id)
],
readsFrom: {
albums,
}).asyncMap(albums.mapFromRow);
}
Selectable<Album> albumsByArtistId(int sourceId, String? artistId) {
return customSelect(
'SELECT * FROM albums WHERE source_id = ?1 AND artist_id = ?2',
variables: [
Variable<int>(sourceId),
Variable<String>(artistId)
],
readsFrom: {
albums,
}).asyncMap(albums.mapFromRow);
}
Selectable<Album> albumsInIds(int sourceId, List<String> ids) {
var $arrayStartIndex = 2;
final expandedids = $expandVar($arrayStartIndex, ids.length);
$arrayStartIndex += ids.length;
return customSelect(
'SELECT * FROM albums WHERE source_id = ?1 AND id IN ($expandedids)',
variables: [
Variable<int>(sourceId),
for (var $ in ids) Variable<String>($)
],
readsFrom: {
albums,
}).asyncMap(albums.mapFromRow);
}
Selectable<Playlist> playlistById(int sourceId, String id) {
return customSelect(
'SELECT * FROM playlists WHERE source_id = ?1 AND id = ?2',
variables: [
Variable<int>(sourceId),
Variable<String>(id)
],
readsFrom: {
playlists,
}).asyncMap(playlists.mapFromRow);
}
Selectable<Song> songById(int sourceId, String id) {
return customSelect('SELECT * FROM songs WHERE source_id = ?1 AND id = ?2',
variables: [
Variable<int>(sourceId),
Variable<String>(id)
],
readsFrom: {
songs,
}).asyncMap(songs.mapFromRow);
}
Selectable<String?> albumGenres(int sourceId, int limit, int offset) {
return customSelect(
'SELECT genre FROM albums WHERE genre IS NOT NULL AND source_id = ?1 GROUP BY genre ORDER BY COUNT(genre) DESC LIMIT ?2 OFFSET ?3',
variables: [
Variable<int>(sourceId),
Variable<int>(limit),
Variable<int>(offset)
],
readsFrom: {
albums,
}).map((QueryRow row) => row.readNullable<String>('genre'));
}
Selectable<Album> albumsByGenre(
int sourceId, String? genre, int limit, int offset) {
return customSelect(
'SELECT albums.* FROM albums JOIN songs ON albums.source_id = songs.source_id AND albums.id = songs.album_id WHERE songs.source_id = ?1 AND songs.genre = ?2 GROUP BY albums.id ORDER BY albums.created DESC, albums.name LIMIT ?3 OFFSET ?4',
variables: [
Variable<int>(sourceId),
Variable<String>(genre),
Variable<int>(limit),
Variable<int>(offset)
],
readsFrom: {
albums,
songs,
}).asyncMap(albums.mapFromRow);
}
Selectable<Song> filterSongsByGenre(FilterSongsByGenre$predicate predicate,
FilterSongsByGenre$order order, FilterSongsByGenre$limit limit) {
var $arrayStartIndex = 1;
final generatedpredicate = $write(predicate(this.songs, this.albums),
hasMultipleTables: true, startIndex: $arrayStartIndex);
$arrayStartIndex += generatedpredicate.amountOfVariables;
final generatedorder = $write(
order?.call(this.songs, this.albums) ?? const OrderBy.nothing(),
hasMultipleTables: true,
startIndex: $arrayStartIndex);
$arrayStartIndex += generatedorder.amountOfVariables;
final generatedlimit = $write(limit(this.songs, this.albums),
hasMultipleTables: true, startIndex: $arrayStartIndex);
$arrayStartIndex += generatedlimit.amountOfVariables;
return customSelect(
'SELECT songs.* FROM songs JOIN albums ON albums.source_id = songs.source_id AND albums.id = songs.album_id WHERE ${generatedpredicate.sql} ${generatedorder.sql} ${generatedlimit.sql}',
variables: [
...generatedpredicate.introducedVariables,
...generatedorder.introducedVariables,
...generatedlimit.introducedVariables
],
readsFrom: {
songs,
albums,
...generatedpredicate.watchedTables,
...generatedorder.watchedTables,
...generatedlimit.watchedTables,
}).asyncMap(songs.mapFromRow);
}
Selectable<int> songsByGenreCount(int sourceId, String? genre) {
return customSelect(
'SELECT COUNT(*) AS _c0 FROM songs WHERE songs.source_id = ?1 AND songs.genre = ?2',
variables: [
Variable<int>(sourceId),
Variable<String>(genre)
],
readsFrom: {
songs,
}).map((QueryRow row) => row.read<int>('_c0'));
}
Selectable<Song> songsWithDownloadTasks() {
return customSelect(
'SELECT * FROM songs WHERE download_task_id IS NOT NULL',
variables: [],
readsFrom: {
songs,
}).asyncMap(songs.mapFromRow);
}
Selectable<Song> songByDownloadTask(String? taskId) {
return customSelect('SELECT * FROM songs WHERE download_task_id = ?1',
variables: [
Variable<String>(taskId)
],
readsFrom: {
songs,
}).asyncMap(songs.mapFromRow);
}
Future<int> clearSongDownloadTaskBySong(int sourceId, String id) {
return customUpdate(
'UPDATE songs SET download_task_id = NULL WHERE source_id = ?1 AND id = ?2',
variables: [Variable<int>(sourceId), Variable<String>(id)],
updates: {songs},
updateKind: UpdateKind.update,
);
}
Future<int> completeSongDownload(String? filePath, String? taskId) {
return customUpdate(
'UPDATE songs SET download_task_id = NULL, download_file_path = ?1 WHERE download_task_id = ?2',
variables: [Variable<String>(filePath), Variable<String>(taskId)],
updates: {songs},
updateKind: UpdateKind.update,
);
}
Future<int> clearSongDownloadTask(String? taskId) {
return customUpdate(
'UPDATE songs SET download_task_id = NULL, download_file_path = NULL WHERE download_task_id = ?1',
variables: [Variable<String>(taskId)],
updates: {songs},
updateKind: UpdateKind.update,
);
}
Future<int> updateSongDownloadTask(String? taskId, int sourceId, String id) {
return customUpdate(
'UPDATE songs SET download_task_id = ?1 WHERE source_id = ?2 AND id = ?3',
variables: [
Variable<String>(taskId),
Variable<int>(sourceId),
Variable<String>(id)
],
updates: {songs},
updateKind: UpdateKind.update,
);
}
Future<int> deleteSongDownloadFile(int sourceId, String id) {
return customUpdate(
'UPDATE songs SET download_task_id = NULL, download_file_path = NULL WHERE source_id = ?1 AND id = ?2',
variables: [Variable<int>(sourceId), Variable<String>(id)],
updates: {songs},
updateKind: UpdateKind.update,
);
}
Selectable<ListDownloadStatus> albumDownloadStatus(int sourceId, String id) {
return customSelect(
'SELECT COUNT(*) AS total, COUNT(CASE WHEN songs.download_file_path IS NOT NULL THEN songs.id ELSE NULL END) AS downloaded, COUNT(CASE WHEN songs.download_task_id IS NOT NULL THEN songs.id ELSE NULL END) AS downloading FROM albums JOIN songs ON albums.source_id = songs.source_id AND albums.id = songs.album_id WHERE albums.source_id = ?1 AND albums.id = ?2',
variables: [
Variable<int>(sourceId),
Variable<String>(id)
],
readsFrom: {
songs,
albums,
}).map((QueryRow row) => ListDownloadStatus(
total: row.read<int>('total'),
downloaded: row.read<int>('downloaded'),
downloading: row.read<int>('downloading'),
));
}
Selectable<ListDownloadStatus> playlistDownloadStatus(
int sourceId, String id) {
return customSelect(
'SELECT COUNT(DISTINCT songs.id) AS total, COUNT(DISTINCT CASE WHEN songs.download_file_path IS NOT NULL THEN songs.id ELSE NULL END) AS downloaded, COUNT(DISTINCT CASE WHEN songs.download_task_id IS NOT NULL THEN songs.id ELSE NULL END) AS downloading FROM playlists JOIN playlist_songs ON playlist_songs.source_id = playlists.source_id AND playlist_songs.playlist_id = playlists.id JOIN songs ON songs.source_id = playlist_songs.source_id AND songs.id = playlist_songs.song_id WHERE playlists.source_id = ?1 AND playlists.id = ?2',
variables: [
Variable<int>(sourceId),
Variable<String>(id)
],
readsFrom: {
songs,
playlists,
playlistSongs,
}).map((QueryRow row) => ListDownloadStatus(
total: row.read<int>('total'),
downloaded: row.read<int>('downloaded'),
downloading: row.read<int>('downloading'),
));
}
Selectable<Album> filterAlbums(FilterAlbums$predicate predicate,
FilterAlbums$order order, FilterAlbums$limit limit) {
var $arrayStartIndex = 1;
final generatedpredicate =
$write(predicate(this.albums), startIndex: $arrayStartIndex);
$arrayStartIndex += generatedpredicate.amountOfVariables;
final generatedorder = $write(
order?.call(this.albums) ?? const OrderBy.nothing(),
startIndex: $arrayStartIndex);
$arrayStartIndex += generatedorder.amountOfVariables;
final generatedlimit =
$write(limit(this.albums), startIndex: $arrayStartIndex);
$arrayStartIndex += generatedlimit.amountOfVariables;
return customSelect(
'SELECT albums.* FROM albums WHERE ${generatedpredicate.sql} ${generatedorder.sql} ${generatedlimit.sql}',
variables: [
...generatedpredicate.introducedVariables,
...generatedorder.introducedVariables,
...generatedlimit.introducedVariables
],
readsFrom: {
albums,
...generatedpredicate.watchedTables,
...generatedorder.watchedTables,
...generatedlimit.watchedTables,
}).asyncMap(albums.mapFromRow);
}
Selectable<Album> filterAlbumsDownloaded(
FilterAlbumsDownloaded$predicate predicate,
FilterAlbumsDownloaded$order order,
FilterAlbumsDownloaded$limit limit) {
var $arrayStartIndex = 1;
final generatedpredicate = $write(predicate(this.albums, this.songs),
hasMultipleTables: true, startIndex: $arrayStartIndex);
$arrayStartIndex += generatedpredicate.amountOfVariables;
final generatedorder = $write(
order?.call(this.albums, this.songs) ?? const OrderBy.nothing(),
hasMultipleTables: true,
startIndex: $arrayStartIndex);
$arrayStartIndex += generatedorder.amountOfVariables;
final generatedlimit = $write(limit(this.albums, this.songs),
hasMultipleTables: true, startIndex: $arrayStartIndex);
$arrayStartIndex += generatedlimit.amountOfVariables;
return customSelect(
'SELECT albums.* FROM albums LEFT JOIN songs ON albums.source_id = songs.source_id AND albums.id = songs.album_id WHERE ${generatedpredicate.sql} GROUP BY albums.source_id, albums.id HAVING SUM(CASE WHEN songs.download_file_path IS NOT NULL THEN 1 ELSE 0 END) > 0 ${generatedorder.sql} ${generatedlimit.sql}',
variables: [
...generatedpredicate.introducedVariables,
...generatedorder.introducedVariables,
...generatedlimit.introducedVariables
],
readsFrom: {
albums,
songs,
...generatedpredicate.watchedTables,
...generatedorder.watchedTables,
...generatedlimit.watchedTables,
}).asyncMap(albums.mapFromRow);
}
Selectable<Artist> filterArtists(FilterArtists$predicate predicate,
FilterArtists$order order, FilterArtists$limit limit) {
var $arrayStartIndex = 1;
final generatedpredicate =
$write(predicate(this.artists), startIndex: $arrayStartIndex);
$arrayStartIndex += generatedpredicate.amountOfVariables;
final generatedorder = $write(
order?.call(this.artists) ?? const OrderBy.nothing(),
startIndex: $arrayStartIndex);
$arrayStartIndex += generatedorder.amountOfVariables;
final generatedlimit =
$write(limit(this.artists), startIndex: $arrayStartIndex);
$arrayStartIndex += generatedlimit.amountOfVariables;
return customSelect(
'SELECT artists.* FROM artists WHERE ${generatedpredicate.sql} ${generatedorder.sql} ${generatedlimit.sql}',
variables: [
...generatedpredicate.introducedVariables,
...generatedorder.introducedVariables,
...generatedlimit.introducedVariables
],
readsFrom: {
artists,
...generatedpredicate.watchedTables,
...generatedorder.watchedTables,
...generatedlimit.watchedTables,
}).asyncMap(artists.mapFromRow);
}
Selectable<Artist> filterArtistsDownloaded(
FilterArtistsDownloaded$predicate predicate,
FilterArtistsDownloaded$order order,
FilterArtistsDownloaded$limit limit) {
var $arrayStartIndex = 1;
final generatedpredicate = $write(
predicate(this.artists, this.albums, this.songs),
hasMultipleTables: true,
startIndex: $arrayStartIndex);
$arrayStartIndex += generatedpredicate.amountOfVariables;
final generatedorder = $write(
order?.call(this.artists, this.albums, this.songs) ??
const OrderBy.nothing(),
hasMultipleTables: true,
startIndex: $arrayStartIndex);
$arrayStartIndex += generatedorder.amountOfVariables;
final generatedlimit = $write(limit(this.artists, this.albums, this.songs),
hasMultipleTables: true, startIndex: $arrayStartIndex);
$arrayStartIndex += generatedlimit.amountOfVariables;
return customSelect(
'SELECT artists.*, COUNT(DISTINCT CASE WHEN songs.download_file_path IS NOT NULL THEN songs.album_id ELSE NULL END) AS album_count FROM artists LEFT JOIN albums ON artists.source_id = albums.source_id AND artists.id = albums.artist_id LEFT JOIN songs ON albums.source_id = songs.source_id AND albums.id = songs.album_id WHERE ${generatedpredicate.sql} GROUP BY artists.source_id, artists.id HAVING SUM(CASE WHEN songs.download_file_path IS NOT NULL THEN 1 ELSE 0 END) > 0 ${generatedorder.sql} ${generatedlimit.sql}',
variables: [
...generatedpredicate.introducedVariables,
...generatedorder.introducedVariables,
...generatedlimit.introducedVariables
],
readsFrom: {
songs,
artists,
albums,
...generatedpredicate.watchedTables,
...generatedorder.watchedTables,
...generatedlimit.watchedTables,
}).map((QueryRow row) => Artist(
sourceId: row.read<int>('source_id'),
id: row.read<String>('id'),
name: row.read<String>('name'),
albumCount: row.read<int>('album_count'),
starred: row.readNullable<DateTime>('starred'),
));
}
Selectable<Playlist> filterPlaylists(FilterPlaylists$predicate predicate,
FilterPlaylists$order order, FilterPlaylists$limit limit) {
var $arrayStartIndex = 1;
final generatedpredicate =
$write(predicate(this.playlists), startIndex: $arrayStartIndex);
$arrayStartIndex += generatedpredicate.amountOfVariables;
final generatedorder = $write(
order?.call(this.playlists) ?? const OrderBy.nothing(),
startIndex: $arrayStartIndex);
$arrayStartIndex += generatedorder.amountOfVariables;
final generatedlimit =
$write(limit(this.playlists), startIndex: $arrayStartIndex);
$arrayStartIndex += generatedlimit.amountOfVariables;
return customSelect(
'SELECT playlists.* FROM playlists WHERE ${generatedpredicate.sql} ${generatedorder.sql} ${generatedlimit.sql}',
variables: [
...generatedpredicate.introducedVariables,
...generatedorder.introducedVariables,
...generatedlimit.introducedVariables
],
readsFrom: {
playlists,
...generatedpredicate.watchedTables,
...generatedorder.watchedTables,
...generatedlimit.watchedTables,
}).asyncMap(playlists.mapFromRow);
}
Selectable<Playlist> filterPlaylistsDownloaded(
FilterPlaylistsDownloaded$predicate predicate,
FilterPlaylistsDownloaded$order order,
FilterPlaylistsDownloaded$limit limit) {
var $arrayStartIndex = 1;
final generatedpredicate = $write(
predicate(this.playlists, this.playlistSongs, this.songs),
hasMultipleTables: true,
startIndex: $arrayStartIndex);
$arrayStartIndex += generatedpredicate.amountOfVariables;
final generatedorder = $write(
order?.call(this.playlists, this.playlistSongs, this.songs) ??
const OrderBy.nothing(),
hasMultipleTables: true,
startIndex: $arrayStartIndex);
$arrayStartIndex += generatedorder.amountOfVariables;
final generatedlimit = $write(
limit(this.playlists, this.playlistSongs, this.songs),
hasMultipleTables: true,
startIndex: $arrayStartIndex);
$arrayStartIndex += generatedlimit.amountOfVariables;
return customSelect(
'SELECT playlists.*, COUNT(CASE WHEN songs.download_file_path IS NOT NULL THEN songs.id ELSE NULL END) AS song_count FROM playlists LEFT JOIN playlist_songs ON playlist_songs.source_id = playlists.source_id AND playlist_songs.playlist_id = playlists.id LEFT JOIN songs ON playlist_songs.source_id = songs.source_id AND playlist_songs.song_id = songs.id WHERE ${generatedpredicate.sql} GROUP BY playlists.source_id, playlists.id HAVING SUM(CASE WHEN songs.download_file_path IS NOT NULL THEN 1 ELSE 0 END) > 0 ${generatedorder.sql} ${generatedlimit.sql}',
variables: [
...generatedpredicate.introducedVariables,
...generatedorder.introducedVariables,
...generatedlimit.introducedVariables
],
readsFrom: {
songs,
playlists,
playlistSongs,
...generatedpredicate.watchedTables,
...generatedorder.watchedTables,
...generatedlimit.watchedTables,
}).map((QueryRow row) => Playlist(
sourceId: row.read<int>('source_id'),
id: row.read<String>('id'),
name: row.read<String>('name'),
comment: row.readNullable<String>('comment'),
coverArt: row.readNullable<String>('cover_art'),
songCount: row.read<int>('song_count'),
created: row.read<DateTime>('created'),
));
}
Selectable<Song> filterSongs(FilterSongs$predicate predicate,
FilterSongs$order order, FilterSongs$limit limit) {
var $arrayStartIndex = 1;
final generatedpredicate =
$write(predicate(this.songs), startIndex: $arrayStartIndex);
$arrayStartIndex += generatedpredicate.amountOfVariables;
final generatedorder = $write(
order?.call(this.songs) ?? const OrderBy.nothing(),
startIndex: $arrayStartIndex);
$arrayStartIndex += generatedorder.amountOfVariables;
final generatedlimit =
$write(limit(this.songs), startIndex: $arrayStartIndex);
$arrayStartIndex += generatedlimit.amountOfVariables;
return customSelect(
'SELECT songs.* FROM songs WHERE ${generatedpredicate.sql} ${generatedorder.sql} ${generatedlimit.sql}',
variables: [
...generatedpredicate.introducedVariables,
...generatedorder.introducedVariables,
...generatedlimit.introducedVariables
],
readsFrom: {
songs,
...generatedpredicate.watchedTables,
...generatedorder.watchedTables,
...generatedlimit.watchedTables,
}).asyncMap(songs.mapFromRow);
}
Selectable<Song> filterSongsDownloaded(
FilterSongsDownloaded$predicate predicate,
FilterSongsDownloaded$order order,
FilterSongsDownloaded$limit limit) {
var $arrayStartIndex = 1;
final generatedpredicate =
$write(predicate(this.songs), startIndex: $arrayStartIndex);
$arrayStartIndex += generatedpredicate.amountOfVariables;
final generatedorder = $write(
order?.call(this.songs) ?? const OrderBy.nothing(),
startIndex: $arrayStartIndex);
$arrayStartIndex += generatedorder.amountOfVariables;
final generatedlimit =
$write(limit(this.songs), startIndex: $arrayStartIndex);
$arrayStartIndex += generatedlimit.amountOfVariables;
return customSelect(
'SELECT songs.* FROM songs WHERE ${generatedpredicate.sql} AND songs.download_file_path IS NOT NULL ${generatedorder.sql} ${generatedlimit.sql}',
variables: [
...generatedpredicate.introducedVariables,
...generatedorder.introducedVariables,
...generatedlimit.introducedVariables
],
readsFrom: {
songs,
...generatedpredicate.watchedTables,
...generatedorder.watchedTables,
...generatedlimit.watchedTables,
}).asyncMap(songs.mapFromRow);
}
Selectable<bool> playlistIsDownloaded(int sourceId, String id) {
return customSelect(
'SELECT COUNT(*) = 0 AS _c0 FROM playlists JOIN playlist_songs ON playlist_songs.source_id = playlists.source_id AND playlist_songs.playlist_id = playlists.id JOIN songs ON songs.source_id = playlist_songs.source_id AND songs.id = playlist_songs.song_id WHERE playlists.source_id = ?1 AND playlists.id = ?2 AND songs.download_file_path IS NULL',
variables: [
Variable<int>(sourceId),
Variable<String>(id)
],
readsFrom: {
playlists,
playlistSongs,
songs,
}).map((QueryRow row) => row.read<bool>('_c0'));
}
Selectable<bool> playlistHasDownloadsInProgress(int sourceId, String id) {
return customSelect(
'SELECT COUNT(*) > 0 AS _c0 FROM playlists JOIN playlist_songs ON playlist_songs.source_id = playlists.source_id AND playlist_songs.playlist_id = playlists.id JOIN songs ON songs.source_id = playlist_songs.source_id AND songs.id = playlist_songs.song_id WHERE playlists.source_id = ?1 AND playlists.id = ?2 AND songs.download_task_id IS NOT NULL',
variables: [
Variable<int>(sourceId),
Variable<String>(id)
],
readsFrom: {
playlists,
playlistSongs,
songs,
}).map((QueryRow row) => row.read<bool>('_c0'));
}
Selectable<Song> songsInIds(int sourceId, List<String> ids) {
var $arrayStartIndex = 2;
final expandedids = $expandVar($arrayStartIndex, ids.length);
$arrayStartIndex += ids.length;
return customSelect(
'SELECT * FROM songs WHERE source_id = ?1 AND id IN ($expandedids)',
variables: [
Variable<int>(sourceId),
for (var $ in ids) Variable<String>($)
],
readsFrom: {
songs,
}).asyncMap(songs.mapFromRow);
}
Selectable<Song> songsInRowIds(List<int> rowIds) {
var $arrayStartIndex = 1;
final expandedrowIds = $expandVar($arrayStartIndex, rowIds.length);
$arrayStartIndex += rowIds.length;
return customSelect(
'SELECT * FROM songs WHERE "ROWID" IN ($expandedrowIds)',
variables: [
for (var $ in rowIds) Variable<int>($)
],
readsFrom: {
songs,
}).asyncMap(songs.mapFromRow);
}
Selectable<Album> albumsInRowIds(List<int> rowIds) {
var $arrayStartIndex = 1;
final expandedrowIds = $expandVar($arrayStartIndex, rowIds.length);
$arrayStartIndex += rowIds.length;
return customSelect(
'SELECT * FROM albums WHERE "ROWID" IN ($expandedrowIds)',
variables: [
for (var $ in rowIds) Variable<int>($)
],
readsFrom: {
albums,
}).asyncMap(albums.mapFromRow);
}
Selectable<Artist> artistsInRowIds(List<int> rowIds) {
var $arrayStartIndex = 1;
final expandedrowIds = $expandVar($arrayStartIndex, rowIds.length);
$arrayStartIndex += rowIds.length;
return customSelect(
'SELECT * FROM artists WHERE "ROWID" IN ($expandedrowIds)',
variables: [
for (var $ in rowIds) Variable<int>($)
],
readsFrom: {
artists,
}).asyncMap(artists.mapFromRow);
}
Selectable<Playlist> playlistsInRowIds(List<int> rowIds) {
var $arrayStartIndex = 1;
final expandedrowIds = $expandVar($arrayStartIndex, rowIds.length);
$arrayStartIndex += rowIds.length;
return customSelect(
'SELECT * FROM playlists WHERE "ROWID" IN ($expandedrowIds)',
variables: [
for (var $ in rowIds) Variable<int>($)
],
readsFrom: {
playlists,
}).asyncMap(playlists.mapFromRow);
}
Selectable<int> currentTrackIndex() {
return customSelect(
'SELECT queue."index" FROM queue WHERE queue.current_track = 1',
variables: [],
readsFrom: {
queue,
}).map((QueryRow row) => row.read<int>('index'));
}
Selectable<int> queueLength() {
return customSelect('SELECT COUNT(*) AS _c0 FROM queue',
variables: [],
readsFrom: {
queue,
}).map((QueryRow row) => row.read<int>('_c0'));
}
Selectable<QueueData> queueInIndicies(List<int> indicies) {
var $arrayStartIndex = 1;
final expandedindicies = $expandVar($arrayStartIndex, indicies.length);
$arrayStartIndex += indicies.length;
return customSelect(
'SELECT * FROM queue WHERE queue."index" IN ($expandedindicies)',
variables: [
for (var $ in indicies) Variable<int>($)
],
readsFrom: {
queue,
}).asyncMap(queue.mapFromRow);
}
Selectable<AppSettings> getAppSettings() {
return customSelect('SELECT * FROM app_settings WHERE id = 1',
variables: [],
readsFrom: {
appSettings,
}).asyncMap(appSettings.mapFromRow);
}
@override
Iterable<TableInfo<Table, Object?>> get allTables =>
allSchemaEntities.whereType<TableInfo<Table, Object?>>();
@override
List<DatabaseSchemaEntity> get allSchemaEntities => [
queue,
queueIndex,
queueCurrentTrack,
lastAudioState,
lastBottomNavState,
lastLibraryState,
appSettings,
sources,
subsonicSources,
artists,
artistsSourceId,
artistsFts,
artistsAi,
artistsAd,
artistsAu,
albums,
albumsSourceId,
albumsSourceIdArtistIdIdx,
albumsFts,
albumsAi,
albumsAd,
albumsAu,
playlists,
playlistsSourceId,
playlistSongs,
playlistSongsSourceIdPlaylistIdIdx,
playlistSongsSourceIdSongIdIdx,
playlistsFts,
playlistsAi,
playlistsAd,
playlistsAu,
songs,
songsSourceIdAlbumIdIdx,
songsSourceIdArtistIdIdx,
songsDownloadTaskIdIdx,
songsFts,
songsAi,
songsAd,
songsAu
];
@override
StreamQueryUpdateRules get streamUpdateRules => const StreamQueryUpdateRules(
[
WritePropagation(
on: TableUpdateQuery.onTableName('sources',
limitUpdateKind: UpdateKind.delete),
result: [
TableUpdate('subsonic_sources', kind: UpdateKind.delete),
],
),
WritePropagation(
on: TableUpdateQuery.onTableName('sources',
limitUpdateKind: UpdateKind.delete),
result: [
TableUpdate('artists', kind: UpdateKind.delete),
],
),
WritePropagation(
on: TableUpdateQuery.onTableName('artists',
limitUpdateKind: UpdateKind.insert),
result: [
TableUpdate('artists_fts', kind: UpdateKind.insert),
],
),
WritePropagation(
on: TableUpdateQuery.onTableName('artists',
limitUpdateKind: UpdateKind.delete),
result: [
TableUpdate('artists_fts', kind: UpdateKind.insert),
],
),
WritePropagation(
on: TableUpdateQuery.onTableName('artists',
limitUpdateKind: UpdateKind.update),
result: [
TableUpdate('artists_fts', kind: UpdateKind.insert),
],
),
WritePropagation(
on: TableUpdateQuery.onTableName('sources',
limitUpdateKind: UpdateKind.delete),
result: [
TableUpdate('albums', kind: UpdateKind.delete),
],
),
WritePropagation(
on: TableUpdateQuery.onTableName('albums',
limitUpdateKind: UpdateKind.insert),
result: [
TableUpdate('albums_fts', kind: UpdateKind.insert),
],
),
WritePropagation(
on: TableUpdateQuery.onTableName('albums',
limitUpdateKind: UpdateKind.delete),
result: [
TableUpdate('albums_fts', kind: UpdateKind.insert),
],
),
WritePropagation(
on: TableUpdateQuery.onTableName('albums',
limitUpdateKind: UpdateKind.update),
result: [
TableUpdate('albums_fts', kind: UpdateKind.insert),
],
),
WritePropagation(
on: TableUpdateQuery.onTableName('sources',
limitUpdateKind: UpdateKind.delete),
result: [
TableUpdate('playlists', kind: UpdateKind.delete),
],
),
WritePropagation(
on: TableUpdateQuery.onTableName('sources',
limitUpdateKind: UpdateKind.delete),
result: [
TableUpdate('playlist_songs', kind: UpdateKind.delete),
],
),
WritePropagation(
on: TableUpdateQuery.onTableName('playlists',
limitUpdateKind: UpdateKind.insert),
result: [
TableUpdate('playlists_fts', kind: UpdateKind.insert),
],
),
WritePropagation(
on: TableUpdateQuery.onTableName('playlists',
limitUpdateKind: UpdateKind.delete),
result: [
TableUpdate('playlists_fts', kind: UpdateKind.insert),
],
),
WritePropagation(
on: TableUpdateQuery.onTableName('playlists',
limitUpdateKind: UpdateKind.update),
result: [
TableUpdate('playlists_fts', kind: UpdateKind.insert),
],
),
WritePropagation(
on: TableUpdateQuery.onTableName('sources',
limitUpdateKind: UpdateKind.delete),
result: [
TableUpdate('songs', kind: UpdateKind.delete),
],
),
WritePropagation(
on: TableUpdateQuery.onTableName('songs',
limitUpdateKind: UpdateKind.insert),
result: [
TableUpdate('songs_fts', kind: UpdateKind.insert),
],
),
WritePropagation(
on: TableUpdateQuery.onTableName('songs',
limitUpdateKind: UpdateKind.delete),
result: [
TableUpdate('songs_fts', kind: UpdateKind.insert),
],
),
WritePropagation(
on: TableUpdateQuery.onTableName('songs',
limitUpdateKind: UpdateKind.update),
result: [
TableUpdate('songs_fts', kind: UpdateKind.insert),
],
),
],
);
}
typedef FilterSongsByGenre$predicate = Expression<bool> Function(
Songs songs, Albums albums);
typedef FilterSongsByGenre$order = OrderBy Function(Songs songs, Albums albums);
typedef FilterSongsByGenre$limit = Limit Function(Songs songs, Albums albums);
typedef FilterAlbums$predicate = Expression<bool> Function(Albums albums);
typedef FilterAlbums$order = OrderBy Function(Albums albums);
typedef FilterAlbums$limit = Limit Function(Albums albums);
typedef FilterAlbumsDownloaded$predicate = Expression<bool> Function(
Albums albums, Songs songs);
typedef FilterAlbumsDownloaded$order = OrderBy Function(
Albums albums, Songs songs);
typedef FilterAlbumsDownloaded$limit = Limit Function(
Albums albums, Songs songs);
typedef FilterArtists$predicate = Expression<bool> Function(Artists artists);
typedef FilterArtists$order = OrderBy Function(Artists artists);
typedef FilterArtists$limit = Limit Function(Artists artists);
typedef FilterArtistsDownloaded$predicate = Expression<bool> Function(
Artists artists, Albums albums, Songs songs);
typedef FilterArtistsDownloaded$order = OrderBy Function(
Artists artists, Albums albums, Songs songs);
typedef FilterArtistsDownloaded$limit = Limit Function(
Artists artists, Albums albums, Songs songs);
typedef FilterPlaylists$predicate = Expression<bool> Function(
Playlists playlists);
typedef FilterPlaylists$order = OrderBy Function(Playlists playlists);
typedef FilterPlaylists$limit = Limit Function(Playlists playlists);
typedef FilterPlaylistsDownloaded$predicate = Expression<bool> Function(
Playlists playlists, PlaylistSongs playlist_songs, Songs songs);
typedef FilterPlaylistsDownloaded$order = OrderBy Function(
Playlists playlists, PlaylistSongs playlist_songs, Songs songs);
typedef FilterPlaylistsDownloaded$limit = Limit Function(
Playlists playlists, PlaylistSongs playlist_songs, Songs songs);
typedef FilterSongs$predicate = Expression<bool> Function(Songs songs);
typedef FilterSongs$order = OrderBy Function(Songs songs);
typedef FilterSongs$limit = Limit Function(Songs songs);
typedef FilterSongsDownloaded$predicate = Expression<bool> Function(
Songs songs);
typedef FilterSongsDownloaded$order = OrderBy Function(Songs songs);
typedef FilterSongsDownloaded$limit = Limit Function(Songs songs);
// **************************************************************************
// RiverpodGenerator
// **************************************************************************
String _$databaseHash() => r'04ae05f49039a6c77afa45892f4e5e0fad7d20c6';
/// See also [database].
@ProviderFor(database)
final databaseProvider = Provider<SubtracksDatabase>.internal(
database,
name: r'databaseProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product') ? null : _$databaseHash,
dependencies: null,
allTransitiveDependencies: null,
);
typedef DatabaseRef = ProviderRef<SubtracksDatabase>;
// ignore_for_file: unnecessary_raw_strings, subtype_of_sealed_class, invalid_use_of_internal_member, do_not_use_environment, prefer_const_constructors, public_member_api_docs, avoid_private_typedef_functions