From 0c05c5b993d60b21c371da15a5eb0f72b7169a34 Mon Sep 17 00:00:00 2001 From: Ivan Skvortsov Date: Mon, 7 Jul 2025 14:36:56 +0300 Subject: [PATCH 1/5] refactor: made seeding counts changeable inside seed_all --- backend/app/modules/admin/seed/service.py | 8 +++---- backend/app/modules/events/seed/seeder.py | 28 +++++++++++++++-------- backend/app/modules/fields/seed/seeder.py | 24 +++++++++++++++---- backend/app/modules/tags/seed/seeder.py | 5 ++-- 4 files changed, 45 insertions(+), 20 deletions(-) diff --git a/backend/app/modules/admin/seed/service.py b/backend/app/modules/admin/seed/service.py index d7b8b59..2aac593 100644 --- a/backend/app/modules/admin/seed/service.py +++ b/backend/app/modules/admin/seed/service.py @@ -6,8 +6,8 @@ from app.shared.service import assert_db_empty -def seed_all(db: Session): +def seed_all(db: Session, n_tags=10, n_fields=10, n_events=10): assert_db_empty(db) - seed_tags(db) - seed_fields(db) - seed_events(db) + seed_tags(db, count=n_tags) + seed_fields(db, count=n_fields) + seed_events(db, count=n_events) diff --git a/backend/app/modules/events/seed/seeder.py b/backend/app/modules/events/seed/seeder.py index 1f6381f..951d424 100644 --- a/backend/app/modules/events/seed/seeder.py +++ b/backend/app/modules/events/seed/seeder.py @@ -1,4 +1,5 @@ import random +import uuid from faker import Faker from sqlalchemy.orm import Session @@ -45,11 +46,20 @@ ] -def generate_event_slug(): - adjective = faker.word(part_of_speech="adjective") - action = random.choice(SHORT_ACTIONS) - target = random.choice(TARGETS) - return f"{adjective}_{target}_{action}" +def generate_event_slug(existing: set) -> str: + attempts = 0 + while attempts < 100: + adjective = faker.word(part_of_speech="adjective") + action = random.choice(SHORT_ACTIONS) + target = random.choice(TARGETS) + + name = f"{adjective}_{target}_{action}" + + if name not in existing: + return name + attempts += 1 + + return f"event_{uuid.uuid4()}" ACTIONS = [ @@ -132,13 +142,11 @@ def seed(db: Session, count: int = 10): print("⚠️ No tags or fields available. Please seed them first.") return - used_names = set() + existing_names = set() for _ in range(count): - name = generate_event_slug() - while name in used_names: - name = generate_event_slug() - used_names.add(name) + name = generate_event_slug(existing_names) + existing_names.add(name) links = [generate_event_link() for _ in range(random.randint(0, 4))] diff --git a/backend/app/modules/fields/seed/seeder.py b/backend/app/modules/fields/seed/seeder.py index c6ff38c..abd1009 100644 --- a/backend/app/modules/fields/seed/seeder.py +++ b/backend/app/modules/fields/seed/seeder.py @@ -1,4 +1,5 @@ import random +import uuid from faker import Faker from sqlalchemy.orm import Session @@ -21,17 +22,32 @@ "experiment", "click", "ref", + "tab", + "entity", + "icon", + "window", ] -SUFFIXES = ["id", "type", "name", "source", "status", "variant", "group", "version"] +SUFFIXES = [ + "id", + "type", + "name", + "source", + "status", + "variant", + "group", + "version", + "position", + "size", + "kind", +] PREFIXES = ["is", "has", "from", "to", "ref"] def generate_field_slug(existing: set) -> str: attempts = 0 - while attempts < 50: - # Randomly pick naming pattern + while attempts < 100: if random.random() < 0.3: prefix = random.choice(PREFIXES) base = random.choice(BASES) @@ -45,7 +61,7 @@ def generate_field_slug(existing: set) -> str: return name attempts += 1 - return f"field_{random.randint(1000, 9999)}" + return f"field_{uuid.uuid4()}" DESCRIPTION_TEMPLATES = [ diff --git a/backend/app/modules/tags/seed/seeder.py b/backend/app/modules/tags/seed/seeder.py index ff5b801..3360942 100644 --- a/backend/app/modules/tags/seed/seeder.py +++ b/backend/app/modules/tags/seed/seeder.py @@ -1,4 +1,5 @@ import random +import uuid from faker import Faker from sqlalchemy.orm import Session @@ -32,13 +33,13 @@ def generate_tag_name(existing: set) -> str: attempts = 0 - while attempts < 50: + while attempts < 100: name = random.choice(TAG_NAMES) if name not in existing: return name attempts += 1 - return f"tag_{random.randint(1000, 9999)}" + return f"tag_{uuid.uuid4()}" FEATURES = [ From 719c9ace7441b84ab72322dce207a6e89dd139c6 Mon Sep 17 00:00:00 2001 From: Ivan Skvortsov Date: Mon, 7 Jul 2025 14:45:30 +0300 Subject: [PATCH 2/5] refactor: tags page --- frontend/src/modules/tags/pages/TagsPage.vue | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/frontend/src/modules/tags/pages/TagsPage.vue b/frontend/src/modules/tags/pages/TagsPage.vue index eaf8b2d..8526bed 100644 --- a/frontend/src/modules/tags/pages/TagsPage.vue +++ b/frontend/src/modules/tags/pages/TagsPage.vue @@ -81,7 +81,13 @@ onMounted(() => {
- + +