feat: add user_id index to profiles table for faster lookups

The profiles table previously lacked an index on the user_id column, causing full table scans during user lookups. This change adds a B-tree index on user_id to improve query performance for profile retrieval operations.
This commit is contained in:
2026-06-14 14:46:36 +00:00
parent 4fc4154dcc
commit f424d02523
149 changed files with 9811 additions and 262 deletions
+2
View File
@@ -17,6 +17,8 @@ def seed_admin_news(count=3):
slug = make_combined_slug(title, uid)
news_table.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
+2
View File
@@ -17,6 +17,8 @@ def seed_admin_news(count=3):
slug = make_combined_slug(title, uid)
news_table.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
+2
View File
@@ -17,6 +17,8 @@ def seed_admin_news(count=3):
slug = make_combined_slug(title, uid)
news_table.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
+4
View File
@@ -17,6 +17,8 @@ def seed_admin_news(count=3):
slug = make_combined_slug(title, uid)
news_table.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
@@ -157,6 +159,8 @@ def _seed_news_audit_log():
title = _unique("aunews")
get_table("news").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": make_combined_slug(title, uid),
"title": title,
View File
+23
View File
@@ -0,0 +1,23 @@
# retoor <retoor@molodetz.nl>
from tests.conftest import BASE_URL
def test_admin_bots_page_loads(alice):
page, _ = alice
page.goto(f"{BASE_URL}/admin/bots", wait_until="domcontentloaded")
assert page.is_visible("text=Bot Monitor")
assert page.locator("#bots-grid").count() == 1
def test_admin_bots_sidebar_link(alice):
page, _ = alice
page.goto(f"{BASE_URL}/admin/services", wait_until="domcontentloaded")
link = page.locator("a.sidebar-link[href='/admin/bots']")
link.wait_for(state="visible")
assert link.count() == 1
def test_admin_bots_redirect_unauth(page, app_server):
page.goto(f"{BASE_URL}/admin/bots", wait_until="domcontentloaded")
assert page.url.startswith(f"{BASE_URL}/auth/login")
+93
View File
@@ -1,9 +1,25 @@
# retoor <retoor@molodetz.nl>
import requests
from playwright.sync_api import expect
from tests.conftest import BASE_URL
from devplacepy.database import get_table
USER_INPUT = '#cm-admin-create-form input[data-search="user"]'
USER_OPTIONS = '#cm-admin-create-form [data-suggest="user"] li[data-value]'
RUN_AS_HIDDEN = '#cm-admin-create-form input[name="run_as_uid"]'
def _open_user_search(page):
page.goto(f"{BASE_URL}/admin/containers", wait_until="domcontentloaded")
page.click('[data-modal="cm-admin-create-modal"]')
inp = page.locator(USER_INPUT)
inp.wait_for(state="visible")
inp.fill("test")
options = page.locator(USER_OPTIONS)
options.first.wait_for(state="visible")
return inp, options
def test_containers_admin_page_loads(alice, app_server):
page, user = alice
@@ -15,3 +31,80 @@ def test_container_instance_page_404_for_missing(alice, app_server):
page, _ = alice
page.goto(f"{BASE_URL}/admin/containers/nonexistent", wait_until="domcontentloaded")
assert page.is_visible("text=Not Found") or page.is_visible("text=404")
def test_user_search_arrow_keys_highlight_and_enter_selects(alice, seeded_db):
page, _ = alice
inp, options = _open_user_search(page)
count = options.count()
assert count >= 1
inp.press("ArrowDown")
expect(options.nth(0)).to_have_class("cm-suggest-active")
target = options.nth(0)
if count >= 2:
inp.press("ArrowDown")
expect(options.nth(1)).to_have_class("cm-suggest-active")
expect(options.nth(0)).not_to_have_class("cm-suggest-active")
target = options.nth(1)
label = target.get_attribute("data-label")
inp.press("Enter")
expect(page.locator(USER_OPTIONS)).to_have_count(0)
assert inp.input_value() == label
assert page.locator(RUN_AS_HIDDEN).input_value() != ""
def test_user_search_arrow_up_wraps_to_last(alice, seeded_db):
page, _ = alice
inp, options = _open_user_search(page)
if options.count() < 2:
return
last = options.count() - 1
inp.press("ArrowUp")
expect(options.nth(last)).to_have_class("cm-suggest-active")
def test_user_search_tab_navigates_options(alice, seeded_db):
page, _ = alice
inp, options = _open_user_search(page)
inp.press("Tab")
expect(options.nth(0)).to_have_class("cm-suggest-active")
if options.count() >= 2:
inp.press("Tab")
expect(options.nth(1)).to_have_class("cm-suggest-active")
def test_user_search_tab_past_last_selects_and_releases(alice, seeded_db):
page, _ = alice
inp, options = _open_user_search(page)
count = options.count()
label = options.nth(count - 1).get_attribute("data-label")
for _ in range(count + 1):
inp.press("Tab")
expect(page.locator(USER_OPTIONS)).to_have_count(0)
assert inp.input_value() == label
assert page.locator(RUN_AS_HIDDEN).input_value() != ""
assert not inp.evaluate("el => el === document.activeElement")
def test_user_search_escape_closes_without_selecting(alice, seeded_db):
page, _ = alice
inp, _ = _open_user_search(page)
inp.press("Escape")
expect(page.locator(USER_OPTIONS)).to_have_count(0)
assert page.locator(RUN_AS_HIDDEN).input_value() == ""
def test_user_search_has_combobox_aria(alice, seeded_db):
page, _ = alice
inp, options = _open_user_search(page)
assert inp.get_attribute("role") == "combobox"
assert inp.get_attribute("aria-expanded") == "true"
inp.press("ArrowDown")
active = inp.get_attribute("aria-activedescendant")
assert active
assert options.nth(0).get_attribute("id") == active
+2
View File
@@ -17,6 +17,8 @@ def seed_admin_news(count=3):
slug = make_combined_slug(title, uid)
news_table.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
+2
View File
@@ -17,6 +17,8 @@ def seed_admin_news(count=3):
slug = make_combined_slug(title, uid)
news_table.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
+2
View File
@@ -17,6 +17,8 @@ def seed_admin_news(count=3):
slug = make_combined_slug(title, uid)
news_table.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
+2
View File
@@ -17,6 +17,8 @@ def seed_admin_news(count=3):
slug = make_combined_slug(title, uid)
news_table.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
+4
View File
@@ -17,6 +17,8 @@ def seed_admin_news(count=3):
slug = make_combined_slug(title, uid)
news_table.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
@@ -157,6 +159,8 @@ def _seed_news_audit_log():
title = _unique("aunews")
get_table("news").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": make_combined_slug(title, uid),
"title": title,
+12
View File
@@ -20,6 +20,8 @@ def _seed_news_seo():
slug = make_combined_slug(title, uid)
get_table("news").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
@@ -63,6 +65,8 @@ def _seed_post_seo(image=None):
slug = make_combined_slug("SEO Detail Post", uid)
get_table("posts").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -87,6 +91,8 @@ def _seed_gist():
slug = make_combined_slug("SEO Detail Gist", uid)
get_table("gists").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -110,6 +116,8 @@ def _seed_project():
slug = make_combined_slug("SEO Detail Project", uid)
get_table("projects").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -128,6 +136,8 @@ def _seed_news_image(news_uid):
get_table("news_images").insert(
{
"deleted_at": None,
"deleted_by": None,
"news_uid": news_uid,
"url": "https://example.com/seo-news-image.jpg",
}
@@ -146,6 +156,8 @@ def _seed_feed_posts(count):
uid = str(uuid4())
posts.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": make_combined_slug(f"seo pag {i}", uid),
+12
View File
@@ -43,6 +43,8 @@ def _seed_news_seo():
slug = make_combined_slug(title, uid)
get_table("news").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
@@ -86,6 +88,8 @@ def _seed_post_seo(image=None):
slug = make_combined_slug("SEO Detail Post", uid)
get_table("posts").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -110,6 +114,8 @@ def _seed_gist():
slug = make_combined_slug("SEO Detail Gist", uid)
get_table("gists").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -133,6 +139,8 @@ def _seed_project():
slug = make_combined_slug("SEO Detail Project", uid)
get_table("projects").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -151,6 +159,8 @@ def _seed_news_image(news_uid):
get_table("news_images").insert(
{
"deleted_at": None,
"deleted_by": None,
"news_uid": news_uid,
"url": "https://example.com/seo-news-image.jpg",
}
@@ -169,6 +179,8 @@ def _seed_feed_posts(count):
uid = str(uuid4())
posts.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": make_combined_slug(f"seo pag {i}", uid),
+2
View File
@@ -98,6 +98,8 @@ def _seed_news_audit_log():
title = _unique("aunews")
get_table("news").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": make_combined_slug(title, uid),
"title": title,
+18
View File
@@ -85,6 +85,8 @@ def _seed_post_with_comments(comment_texts, topic="devlog"):
marker = f"seedpost-{post_uid[:8]}"
get_table("posts").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": post_uid,
"user_uid": owner,
"slug": make_combined_slug(marker, post_uid),
@@ -102,6 +104,8 @@ def _seed_post_with_comments(comment_texts, topic="devlog"):
for i, text in enumerate(comment_texts):
comments.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": str(uuid4()),
"target_type": "post",
"target_uid": post_uid,
@@ -242,6 +246,8 @@ def _seed_news_seo():
slug = make_combined_slug(title, uid)
get_table("news").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
@@ -285,6 +291,8 @@ def _seed_post_seo(image=None):
slug = make_combined_slug("SEO Detail Post", uid)
get_table("posts").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -309,6 +317,8 @@ def _seed_gist():
slug = make_combined_slug("SEO Detail Gist", uid)
get_table("gists").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -332,6 +342,8 @@ def _seed_project():
slug = make_combined_slug("SEO Detail Project", uid)
get_table("projects").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -350,6 +362,8 @@ def _seed_news_image(news_uid):
get_table("news_images").insert(
{
"deleted_at": None,
"deleted_by": None,
"news_uid": news_uid,
"url": "https://example.com/seo-news-image.jpg",
}
@@ -368,6 +382,8 @@ def _seed_feed_posts(count):
uid = str(uuid4())
posts.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": make_combined_slug(f"seo pag {i}", uid),
@@ -480,6 +496,7 @@ def test_feed_tab_switching(alice):
def test_feed_topic_filter_sidebar(alice):
page, user = alice
page.goto(f"{BASE_URL}/feed", wait_until="domcontentloaded")
page.locator(".sidebar-more .sidebar-more-toggle").click()
topics = ["Devlog", "Showcase", "Question", "Rant", "Fun"]
for topic in topics:
link = page.locator(f"a:has-text('{topic}')").first
@@ -621,6 +638,7 @@ def test_feed_guest_reply_disabled(page, app_server):
def test_feed_signals_topic(alice):
page, _ = alice
page.goto(f"{BASE_URL}/feed", wait_until="domcontentloaded")
page.locator(".sidebar-more .sidebar-more-toggle").click()
signals_link = page.locator("a:has-text('Signals')")
assert signals_link.is_visible()
+2
View File
@@ -48,6 +48,8 @@ def _seed_gists(count):
title = f"Pag Gist {i}"
gists.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": make_combined_slug(title, uid),
+12
View File
@@ -14,6 +14,8 @@ def _seed_news_seo():
slug = make_combined_slug(title, uid)
get_table("news").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
@@ -57,6 +59,8 @@ def _seed_post_seo(image=None):
slug = make_combined_slug("SEO Detail Post", uid)
get_table("posts").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -81,6 +85,8 @@ def _seed_gist():
slug = make_combined_slug("SEO Detail Gist", uid)
get_table("gists").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -104,6 +110,8 @@ def _seed_project():
slug = make_combined_slug("SEO Detail Project", uid)
get_table("projects").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -122,6 +130,8 @@ def _seed_news_image(news_uid):
get_table("news_images").insert(
{
"deleted_at": None,
"deleted_by": None,
"news_uid": news_uid,
"url": "https://example.com/seo-news-image.jpg",
}
@@ -140,6 +150,8 @@ def _seed_feed_posts(count):
uid = str(uuid4())
posts.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": make_combined_slug(f"seo pag {i}", uid),
+16
View File
@@ -17,6 +17,8 @@ def _seed_news_paginated(count):
titles.append(title)
news_table.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": make_combined_slug(title, uid),
"title": title,
@@ -42,6 +44,8 @@ def seed_news():
slug = make_combined_slug(title, uid)
news_table.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
@@ -71,6 +75,8 @@ def _seed_news_seo():
slug = make_combined_slug(title, uid)
get_table("news").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
@@ -114,6 +120,8 @@ def _seed_post_seo(image=None):
slug = make_combined_slug("SEO Detail Post", uid)
get_table("posts").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -138,6 +146,8 @@ def _seed_gist():
slug = make_combined_slug("SEO Detail Gist", uid)
get_table("gists").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -161,6 +171,8 @@ def _seed_project():
slug = make_combined_slug("SEO Detail Project", uid)
get_table("projects").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -179,6 +191,8 @@ def _seed_news_image(news_uid):
get_table("news_images").insert(
{
"deleted_at": None,
"deleted_by": None,
"news_uid": news_uid,
"url": "https://example.com/seo-news-image.jpg",
}
@@ -197,6 +211,8 @@ def _seed_feed_posts(count):
uid = str(uuid4())
posts.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": make_combined_slug(f"seo pag {i}", uid),
+12
View File
@@ -15,6 +15,8 @@ def _seed_news_seo():
slug = make_combined_slug(title, uid)
get_table("news").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
@@ -58,6 +60,8 @@ def _seed_post_seo(image=None):
slug = make_combined_slug("SEO Detail Post", uid)
get_table("posts").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -82,6 +86,8 @@ def _seed_gist():
slug = make_combined_slug("SEO Detail Gist", uid)
get_table("gists").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -105,6 +111,8 @@ def _seed_project():
slug = make_combined_slug("SEO Detail Project", uid)
get_table("projects").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -123,6 +131,8 @@ def _seed_news_image(news_uid):
get_table("news_images").insert(
{
"deleted_at": None,
"deleted_by": None,
"news_uid": news_uid,
"url": "https://example.com/seo-news-image.jpg",
}
@@ -141,6 +151,8 @@ def _seed_feed_posts(count):
uid = str(uuid4())
posts.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": make_combined_slug(f"seo pag {i}", uid),
+8 -2
View File
@@ -58,7 +58,10 @@ def test_post_vote_increment(alice):
def test_post_upvote_voted_state_persists(alice):
page, _ = alice
create_post(page, "showcase", "Upvote persistence test")
page.locator(".post-action-btn.vote-up").first.click()
with page.expect_response(
lambda r: "/votes/" in r.url and r.request.method == "POST"
):
page.locator(".post-action-btn.vote-up").first.click()
expect(page.locator(".post-vote-count").first).to_have_text("1")
page.reload(wait_until="domcontentloaded")
expect(page.locator(".post-action-btn.vote-up").first).to_have_class(
@@ -72,7 +75,10 @@ def test_post_upvote_voted_state_persists(alice):
def test_post_downvote_voted_state_persists(alice):
page, _ = alice
create_post(page, "showcase", "Downvote persistence test")
page.locator(".post-action-btn.vote-down").first.click()
with page.expect_response(
lambda r: "/votes/" in r.url and r.request.method == "POST"
):
page.locator(".post-action-btn.vote-down").first.click()
expect(page.locator(".post-vote-count").first).to_have_text("-1")
page.reload(wait_until="domcontentloaded")
expect(page.locator(".post-action-btn.vote-down").first).to_have_class(
+12
View File
@@ -43,6 +43,8 @@ def _seed_news_seo():
slug = make_combined_slug(title, uid)
get_table("news").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
@@ -86,6 +88,8 @@ def _seed_post_seo(image=None):
slug = make_combined_slug("SEO Detail Post", uid)
get_table("posts").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -110,6 +114,8 @@ def _seed_gist():
slug = make_combined_slug("SEO Detail Gist", uid)
get_table("gists").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -133,6 +139,8 @@ def _seed_project():
slug = make_combined_slug("SEO Detail Project", uid)
get_table("projects").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -151,6 +159,8 @@ def _seed_news_image(news_uid):
get_table("news_images").insert(
{
"deleted_at": None,
"deleted_by": None,
"news_uid": news_uid,
"url": "https://example.com/seo-news-image.jpg",
}
@@ -169,6 +179,8 @@ def _seed_feed_posts(count):
uid = str(uuid4())
posts.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": make_combined_slug(f"seo pag {i}", uid),
+16
View File
@@ -72,6 +72,8 @@ def _seed_post_with_comments(comment_texts, topic="devlog"):
marker = f"seedpost-{post_uid[:8]}"
get_table("posts").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": post_uid,
"user_uid": owner,
"slug": make_combined_slug(marker, post_uid),
@@ -89,6 +91,8 @@ def _seed_post_with_comments(comment_texts, topic="devlog"):
for i, text in enumerate(comment_texts):
comments.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": str(uuid4()),
"target_type": "post",
"target_uid": post_uid,
@@ -173,6 +177,8 @@ def _seed_news_seo():
slug = make_combined_slug(title, uid)
get_table("news").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
@@ -216,6 +222,8 @@ def _seed_post_seo(image=None):
slug = make_combined_slug("SEO Detail Post", uid)
get_table("posts").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -240,6 +248,8 @@ def _seed_gist():
slug = make_combined_slug("SEO Detail Gist", uid)
get_table("gists").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -263,6 +273,8 @@ def _seed_project():
slug = make_combined_slug("SEO Detail Project", uid)
get_table("projects").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -281,6 +293,8 @@ def _seed_news_image(news_uid):
get_table("news_images").insert(
{
"deleted_at": None,
"deleted_by": None,
"news_uid": news_uid,
"url": "https://example.com/seo-news-image.jpg",
}
@@ -299,6 +313,8 @@ def _seed_feed_posts(count):
uid = str(uuid4())
posts.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": make_combined_slug(f"seo pag {i}", uid),
+14
View File
@@ -91,6 +91,8 @@ def _seed_gists(count):
title = f"Pag Gist {i}"
gists.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": make_combined_slug(title, uid),
@@ -292,6 +294,8 @@ def _seed_news_seo():
slug = make_combined_slug(title, uid)
get_table("news").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
@@ -335,6 +339,8 @@ def _seed_post_seo(image=None):
slug = make_combined_slug("SEO Detail Post", uid)
get_table("posts").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -359,6 +365,8 @@ def _seed_gist():
slug = make_combined_slug("SEO Detail Gist", uid)
get_table("gists").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -382,6 +390,8 @@ def _seed_project():
slug = make_combined_slug("SEO Detail Project", uid)
get_table("projects").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -400,6 +410,8 @@ def _seed_news_image(news_uid):
get_table("news_images").insert(
{
"deleted_at": None,
"deleted_by": None,
"news_uid": news_uid,
"url": "https://example.com/seo-news-image.jpg",
}
@@ -418,6 +430,8 @@ def _seed_feed_posts(count):
uid = str(uuid4())
posts.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": make_combined_slug(f"seo pag {i}", uid),
+6
View File
@@ -62,6 +62,8 @@ def _seed_post_with_comments(comment_texts, topic="devlog"):
marker = f"seedpost-{post_uid[:8]}"
get_table("posts").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": post_uid,
"user_uid": owner,
"slug": make_combined_slug(marker, post_uid),
@@ -79,6 +81,8 @@ def _seed_post_with_comments(comment_texts, topic="devlog"):
for i, text in enumerate(comment_texts):
comments.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": str(uuid4()),
"target_type": "post",
"target_uid": post_uid,
@@ -266,6 +270,8 @@ def _seed_projects(count):
title = f"Pag Project {i}"
projects.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": make_combined_slug(title, uid),
+14
View File
@@ -15,6 +15,8 @@ def _seed_news_seo():
slug = make_combined_slug(title, uid)
get_table("news").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
@@ -58,6 +60,8 @@ def _seed_post_seo(image=None):
slug = make_combined_slug("SEO Detail Post", uid)
get_table("posts").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -82,6 +86,8 @@ def _seed_gist():
slug = make_combined_slug("SEO Detail Gist", uid)
get_table("gists").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -105,6 +111,8 @@ def _seed_project():
slug = make_combined_slug("SEO Detail Project", uid)
get_table("projects").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": slug,
@@ -123,6 +131,8 @@ def _seed_news_image(news_uid):
get_table("news_images").insert(
{
"deleted_at": None,
"deleted_by": None,
"news_uid": news_uid,
"url": "https://example.com/seo-news-image.jpg",
}
@@ -141,6 +151,8 @@ def _seed_feed_posts(count):
uid = str(uuid4())
posts.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"user_uid": owner,
"slug": make_combined_slug(f"seo pag {i}", uid),
@@ -213,6 +225,8 @@ def test_landing_news_section(page, app_server):
uid = str(uuid4())
get_table("news").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": f"landing-news-{uid[:8]}",
"title": f"Landing News {uid[:8]}",