···
create table if not exists posts (
-
grapheme_length integer unique,
self.logger = logging.getLogger('feeds.battle')
···
post_uri = f'at://{repo}/{path}'
-
l = grapheme.length(record['text'])
ts = self.safe_timestamp(record['createdAt']).timestamp()
self.transaction_begin(self.db_cnx)
···
insert into posts(uri, grapheme_length, create_ts, lang)
values(:uri, :length, :ts, :lang)
-
on conflict(grapheme_length) do update set uri = :uri
-
""", dict(uri=post_uri, length=l, ts=ts, lang=lang))
def commit_changes(self):
self.logger.debug('committing changes')
···
self.wal_checkpoint(self.db_cnx, 'RESTART')
def serve_feed(self, limit, offset, langs):
-
# cur = self.db_cnx.execute(
-
# "select uri from posts order by grapheme_length asc limit :limit offset :offset",
-
# dict(limit=limit, offset=offset)
-
# return [uri for (uri,) in cur]
-
# lang_values = list(langs.values())
-
# lang_selects = ['select uri, grapheme_length from posts where lang = ?'] * len(lang_values)
-
# lang_clause = ' union '.join(lang_selects)
-
# cur = self.db_cnx.execute(
-
# lang_clause + ' order by grapheme_length asc limit ? offset ?',
-
# [*lang_values, limit, offset]
-
# return [uri for (uri, create_ts) in cur]
-
cur = self.db_cnx.execute("""
-
order by grapheme_length asc
-
limit :limit offset :offset
-
""", dict(limit=limit, offset=offset))
-
return [uri for (uri,) in cur]
-
def serve_feed_debug(self, limit, offset, langs):
-
order by grapheme_length asc
-
limit :limit offset :offset
-
bindings = dict(limit=limit, offset=offset)
return apsw.ext.format_query_table(
self.db_cnx, query, bindings,
string_sanitize=2, text_width=9999, use_unicode=True
···
create table if not exists posts (
+
grapheme_length integer,
+
create unique index if not exists ll_idx on posts(grapheme_length, lang);
self.logger = logging.getLogger('feeds.battle')
···
post_uri = f'at://{repo}/{path}'
+
length = grapheme.length(record['text'])
ts = self.safe_timestamp(record['createdAt']).timestamp()
self.transaction_begin(self.db_cnx)
···
insert into posts(uri, grapheme_length, create_ts, lang)
values(:uri, :length, :ts, :lang)
+
on conflict do update set uri = :uri, create_ts = :ts
+
""", dict(uri=post_uri, length=length, ts=ts, lang=lang))
def commit_changes(self):
self.logger.debug('committing changes')
···
self.wal_checkpoint(self.db_cnx, 'RESTART')
def serve_feed(self, limit, offset, langs):
+
cur = self.db_cnx.execute("""
+
order by grapheme_length asc
+
limit :limit offset :offset
+
""", dict(limit=limit, offset=offset))
+
return [uri for (uri,) in cur]
+
lang_values = list(langs.values())
+
lang_selects = ['select uri, grapheme_length from posts where lang = ?'] * len(lang_values)
+
lang_clause = ' union '.join(lang_selects)
+
cur = self.db_cnx.execute(
+
lang_clause + ' order by grapheme_length asc limit ? offset ?',
+
[*lang_values, limit, offset]
+
return [uri for (uri, grapheme_length) in cur]
+
def serve_feed_debug(self, limit, offset, langs):
+
select *, unixepoch('now') - create_ts as age_seconds
+
order by grapheme_length asc
+
limit :limit offset :offset
+
bindings = [limit, offset]
+
lang_values = list(langs.values())
+
lang_selects = ["select *, unixepoch('now') - create_ts as age_seconds from posts where lang = ?"] * len(lang_values)
+
lang_clause = ' union '.join(lang_selects)
+
query = lang_clause + ' order by grapheme_length asc limit ? offset ?'
+
bindings = [*lang_values, limit, offset]
return apsw.ext.format_query_table(
self.db_cnx, query, bindings,
string_sanitize=2, text_width=9999, use_unicode=True