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