support nullable uri
This commit is contained in:
@@ -14,3 +14,17 @@ class UriConverter extends TypeConverter<Uri, String> {
|
||||
return value.toString();
|
||||
}
|
||||
}
|
||||
|
||||
class UriConverterNullable extends TypeConverter<Uri?, String?> {
|
||||
const UriConverterNullable();
|
||||
|
||||
@override
|
||||
Uri? fromSql(String? fromDb) {
|
||||
return uri_parser.tryParseUrl(fromDb, eagerParsing: true);
|
||||
}
|
||||
|
||||
@override
|
||||
String? toSql(Uri? value) {
|
||||
return value?.toString();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ CREATE TABLE tab(
|
||||
parent_id TEXT REFERENCES tab (id) ON DELETE SET NULL,
|
||||
container_id TEXT REFERENCES container (id) ON DELETE CASCADE,
|
||||
order_key TEXT NOT NULL,
|
||||
url TEXT MAPPED BY `const UriConverter()`,
|
||||
url TEXT MAPPED BY `const UriConverterNullable()`,
|
||||
title TEXT,
|
||||
is_probably_readerable BOOL,
|
||||
extracted_content_markdown TEXT,
|
||||
|
||||
@@ -228,7 +228,7 @@ class Tab extends Table with TableInfo<Tab, TabData> {
|
||||
type: DriftSqlType.string,
|
||||
requiredDuringInsert: false,
|
||||
$customConstraints: '',
|
||||
).withConverter<Uri?>(Tab.$converterurln);
|
||||
).withConverter<Uri?>(Tab.$converterurl);
|
||||
late final GeneratedColumn<String> title = GeneratedColumn<String>(
|
||||
'title',
|
||||
aliasedName,
|
||||
@@ -330,7 +330,7 @@ class Tab extends Table with TableInfo<Tab, TabData> {
|
||||
DriftSqlType.string,
|
||||
data['${effectivePrefix}order_key'],
|
||||
)!,
|
||||
url: Tab.$converterurln.fromSql(
|
||||
url: Tab.$converterurl.fromSql(
|
||||
attachedDatabase.typeMapping.read(
|
||||
DriftSqlType.string,
|
||||
data['${effectivePrefix}url'],
|
||||
@@ -372,9 +372,8 @@ class Tab extends Table with TableInfo<Tab, TabData> {
|
||||
return Tab(attachedDatabase, alias);
|
||||
}
|
||||
|
||||
static TypeConverter<Uri, String> $converterurl = const UriConverter();
|
||||
static TypeConverter<Uri?, String?> $converterurln =
|
||||
NullAwareTypeConverter.wrap($converterurl);
|
||||
static TypeConverter<Uri?, String?> $converterurl =
|
||||
const UriConverterNullable();
|
||||
@override
|
||||
bool get dontWriteConstraints => true;
|
||||
}
|
||||
@@ -418,7 +417,7 @@ class TabData extends DataClass implements Insertable<TabData> {
|
||||
}
|
||||
map['order_key'] = Variable<String>(orderKey);
|
||||
if (!nullToAbsent || url != null) {
|
||||
map['url'] = Variable<String>(Tab.$converterurln.toSql(url));
|
||||
map['url'] = Variable<String>(Tab.$converterurl.toSql(url));
|
||||
}
|
||||
if (!nullToAbsent || title != null) {
|
||||
map['title'] = Variable<String>(title);
|
||||
@@ -747,7 +746,7 @@ class TabCompanion extends UpdateCompanion<TabData> {
|
||||
map['order_key'] = Variable<String>(orderKey.value);
|
||||
}
|
||||
if (url.present) {
|
||||
map['url'] = Variable<String>(Tab.$converterurln.toSql(url.value));
|
||||
map['url'] = Variable<String>(Tab.$converterurl.toSql(url.value));
|
||||
}
|
||||
if (title.present) {
|
||||
map['title'] = Variable<String>(title.value);
|
||||
@@ -1176,8 +1175,7 @@ abstract class _$TabDatabase extends GeneratedDatabase {
|
||||
id: row.read<String>('id'),
|
||||
title: row.readNullable<String>('title'),
|
||||
url: row.readNullable<String>('url'),
|
||||
cleanUrl: NullAwareTypeConverter.wrapFromSql(
|
||||
Tab.$converterurl,
|
||||
cleanUrl: Tab.$converterurl.fromSql(
|
||||
row.readNullable<String>('clean_url'),
|
||||
),
|
||||
weightedRank: row.read<double>('weighted_rank'),
|
||||
@@ -1207,8 +1205,7 @@ abstract class _$TabDatabase extends GeneratedDatabase {
|
||||
id: row.read<String>('id'),
|
||||
title: row.readNullable<String>('title'),
|
||||
url: row.readNullable<String>('url'),
|
||||
cleanUrl: NullAwareTypeConverter.wrapFromSql(
|
||||
Tab.$converterurl,
|
||||
cleanUrl: Tab.$converterurl.fromSql(
|
||||
row.readNullable<String>('clean_url'),
|
||||
),
|
||||
extractedContent: row.readNullable<String>('extracted_content'),
|
||||
|
||||
@@ -9,8 +9,8 @@ CREATE TABLE feed (
|
||||
url TEXT PRIMARY KEY NOT NULL MAPPED BY `const UriConverter()`,
|
||||
title TEXT,
|
||||
description TEXT,
|
||||
icon TEXT MAPPED BY `const UriConverter()`,
|
||||
site_link TEXT MAPPED BY `const UriConverter()`,
|
||||
icon TEXT MAPPED BY `const UriConverterNullable()`,
|
||||
site_link TEXT MAPPED BY `const UriConverterNullable()`,
|
||||
authors TEXT MAPPED BY `const FeedAuthorsConverter()`,
|
||||
tags TEXT MAPPED BY `const FeedCategoriesConverter()`,
|
||||
last_fetched DATETIME
|
||||
|
||||
@@ -41,7 +41,7 @@ class Feed extends Table with TableInfo<Feed, FeedData> {
|
||||
type: DriftSqlType.string,
|
||||
requiredDuringInsert: false,
|
||||
$customConstraints: '',
|
||||
).withConverter<Uri?>(Feed.$convertericonn);
|
||||
).withConverter<Uri?>(Feed.$convertericon);
|
||||
late final GeneratedColumnWithTypeConverter<Uri?, String> siteLink =
|
||||
GeneratedColumn<String>(
|
||||
'site_link',
|
||||
@@ -50,7 +50,7 @@ class Feed extends Table with TableInfo<Feed, FeedData> {
|
||||
type: DriftSqlType.string,
|
||||
requiredDuringInsert: false,
|
||||
$customConstraints: '',
|
||||
).withConverter<Uri?>(Feed.$convertersiteLinkn);
|
||||
).withConverter<Uri?>(Feed.$convertersiteLink);
|
||||
late final GeneratedColumnWithTypeConverter<List<FeedAuthor>?, String>
|
||||
authors = GeneratedColumn<String>(
|
||||
'authors',
|
||||
@@ -113,13 +113,13 @@ class Feed extends Table with TableInfo<Feed, FeedData> {
|
||||
DriftSqlType.string,
|
||||
data['${effectivePrefix}description'],
|
||||
),
|
||||
icon: Feed.$convertericonn.fromSql(
|
||||
icon: Feed.$convertericon.fromSql(
|
||||
attachedDatabase.typeMapping.read(
|
||||
DriftSqlType.string,
|
||||
data['${effectivePrefix}icon'],
|
||||
),
|
||||
),
|
||||
siteLink: Feed.$convertersiteLinkn.fromSql(
|
||||
siteLink: Feed.$convertersiteLink.fromSql(
|
||||
attachedDatabase.typeMapping.read(
|
||||
DriftSqlType.string,
|
||||
data['${effectivePrefix}site_link'],
|
||||
@@ -150,12 +150,10 @@ class Feed extends Table with TableInfo<Feed, FeedData> {
|
||||
}
|
||||
|
||||
static TypeConverter<Uri, String> $converterurl = const UriConverter();
|
||||
static TypeConverter<Uri, String> $convertericon = const UriConverter();
|
||||
static TypeConverter<Uri?, String?> $convertericonn =
|
||||
NullAwareTypeConverter.wrap($convertericon);
|
||||
static TypeConverter<Uri, String> $convertersiteLink = const UriConverter();
|
||||
static TypeConverter<Uri?, String?> $convertersiteLinkn =
|
||||
NullAwareTypeConverter.wrap($convertersiteLink);
|
||||
static TypeConverter<Uri?, String?> $convertericon =
|
||||
const UriConverterNullable();
|
||||
static TypeConverter<Uri?, String?> $convertersiteLink =
|
||||
const UriConverterNullable();
|
||||
static TypeConverter<List<FeedAuthor>, String> $converterauthors =
|
||||
const FeedAuthorsConverter();
|
||||
static TypeConverter<List<FeedAuthor>?, String?> $converterauthorsn =
|
||||
@@ -200,11 +198,11 @@ class FeedData extends DataClass implements Insertable<FeedData> {
|
||||
map['description'] = Variable<String>(description);
|
||||
}
|
||||
if (!nullToAbsent || icon != null) {
|
||||
map['icon'] = Variable<String>(Feed.$convertericonn.toSql(icon));
|
||||
map['icon'] = Variable<String>(Feed.$convertericon.toSql(icon));
|
||||
}
|
||||
if (!nullToAbsent || siteLink != null) {
|
||||
map['site_link'] = Variable<String>(
|
||||
Feed.$convertersiteLinkn.toSql(siteLink),
|
||||
Feed.$convertersiteLink.toSql(siteLink),
|
||||
);
|
||||
}
|
||||
if (!nullToAbsent || authors != null) {
|
||||
@@ -419,11 +417,11 @@ class FeedCompanion extends UpdateCompanion<FeedData> {
|
||||
map['description'] = Variable<String>(description.value);
|
||||
}
|
||||
if (icon.present) {
|
||||
map['icon'] = Variable<String>(Feed.$convertericonn.toSql(icon.value));
|
||||
map['icon'] = Variable<String>(Feed.$convertericon.toSql(icon.value));
|
||||
}
|
||||
if (siteLink.present) {
|
||||
map['site_link'] = Variable<String>(
|
||||
Feed.$convertersiteLinkn.toSql(siteLink.value),
|
||||
Feed.$convertersiteLink.toSql(siteLink.value),
|
||||
);
|
||||
}
|
||||
if (authors.present) {
|
||||
@@ -1064,13 +1062,13 @@ class ArticleView extends ViewInfo<ArticleView, FeedArticle>
|
||||
DriftSqlType.string,
|
||||
data['${effectivePrefix}contentPlain'],
|
||||
),
|
||||
icon: Feed.$convertericonn.fromSql(
|
||||
icon: Feed.$convertericon.fromSql(
|
||||
attachedDatabase.typeMapping.read(
|
||||
DriftSqlType.string,
|
||||
data['${effectivePrefix}icon'],
|
||||
),
|
||||
),
|
||||
siteLink: Feed.$convertersiteLinkn.fromSql(
|
||||
siteLink: Feed.$convertersiteLink.fromSql(
|
||||
attachedDatabase.typeMapping.read(
|
||||
DriftSqlType.string,
|
||||
data['${effectivePrefix}site_link'],
|
||||
@@ -1185,14 +1183,14 @@ class ArticleView extends ViewInfo<ArticleView, FeedArticle>
|
||||
aliasedName,
|
||||
true,
|
||||
type: DriftSqlType.string,
|
||||
).withConverter<Uri?>(Feed.$convertericonn);
|
||||
).withConverter<Uri?>(Feed.$convertericon);
|
||||
late final GeneratedColumnWithTypeConverter<Uri?, String> siteLink =
|
||||
GeneratedColumn<String>(
|
||||
'site_link',
|
||||
aliasedName,
|
||||
true,
|
||||
type: DriftSqlType.string,
|
||||
).withConverter<Uri?>(Feed.$convertersiteLinkn);
|
||||
).withConverter<Uri?>(Feed.$convertersiteLink);
|
||||
@override
|
||||
ArticleView createAlias(String alias) {
|
||||
return ArticleView(attachedDatabase, alias);
|
||||
@@ -1503,10 +1501,7 @@ abstract class _$FeedDatabase extends GeneratedDatabase {
|
||||
contentHtml: row.readNullable<String>('contentHtml'),
|
||||
contentMarkdown: row.readNullable<String>('contentMarkdown'),
|
||||
contentPlain: row.readNullable<String>('contentPlain'),
|
||||
icon: NullAwareTypeConverter.wrapFromSql(
|
||||
Feed.$convertericon,
|
||||
row.readNullable<String>('icon'),
|
||||
),
|
||||
icon: Feed.$convertericon.fromSql(row.readNullable<String>('icon')),
|
||||
),
|
||||
);
|
||||
}
|
||||
@@ -1558,10 +1553,7 @@ abstract class _$FeedDatabase extends GeneratedDatabase {
|
||||
contentHtml: row.readNullable<String>('contentHtml'),
|
||||
contentMarkdown: row.readNullable<String>('contentMarkdown'),
|
||||
contentPlain: row.readNullable<String>('contentPlain'),
|
||||
icon: NullAwareTypeConverter.wrapFromSql(
|
||||
Feed.$convertericon,
|
||||
row.readNullable<String>('icon'),
|
||||
),
|
||||
icon: Feed.$convertericon.fromSql(row.readNullable<String>('icon')),
|
||||
titleHighlight: row.readNullable<String>('title_highlight'),
|
||||
summarySnippet: row.readNullable<String>('summary_snippet'),
|
||||
contentSnippet: row.readNullable<String>('content_snippet'),
|
||||
|
||||
Reference in New Issue
Block a user