Skip to content

Commit 8a3f15a

Browse files
authored
Merge pull request open5e#654 from open5e/652-search-functionality-should-be-broken-into-its-own-app
Refactor search into its own app.
2 parents 763a52a + a78ba33 commit 8a3f15a

File tree

18 files changed

+91
-29
lines changed

18 files changed

+91
-29
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Generated by Django 5.1.2 on 2025-03-13 15:23
2+
3+
from django.db import migrations
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('api_v2', '0025_creature_initiative_bonus'),
10+
]
11+
12+
operations = [
13+
migrations.DeleteModel(
14+
name='SearchResult',
15+
),
16+
]

api_v2/models/__init__.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,6 @@
5050
from .characterclass import ClassFeature
5151
from .characterclass import CharacterClass
5252

53-
from .search import SearchResult
54-
5553
from .size import Size
5654

5755
from .environment import Environment

api_v2/serializers/__init__.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,6 @@
4040
from .characterclass import ClassFeatureSerializer
4141
from .characterclass import ClassFeatureItemSerializer
4242

43-
from .search import SearchResultSerializer
44-
4543
from .size import SizeSerializer
4644

4745
from .environment import EnvironmentSerializer

api_v2/urls.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,7 @@
3636
router.register(r'rulesets', views.RuleSetViewSet)
3737
router.register(r'creaturetraits', views.CreatureTraitViewSet)
3838

39-
search_router = routers.DefaultRouter()
40-
search_router.register('',views.SearchResultViewSet, basename='search')
41-
4239
urlpatterns = [
4340
path('v2/', include(router.urls)),
44-
path('v2/search/', include(search_router.urls)),
4541
path('v2/enums/', views.get_enums, name="enums")
4642
]

api_v2/views/__init__.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,6 @@
3535

3636
from .characterclass import CharacterClassViewSet
3737

38-
from .search import SearchResultViewSet
39-
4038
from .size import SizeViewSet
4139

4240
from .rule import RuleViewSet, RuleSetViewSet

search/__init__.py

Whitespace-only changes.

search/admin.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from django.contrib import admin
2+
3+
# Register your models here.

search/apps.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from django.apps import AppConfig
2+
3+
4+
class SearchConfig(AppConfig):
5+
default_auto_field = 'django.db.models.BigAutoField'
6+
name = 'search'

api_v2/management/commands/buildindex.py renamed to search/management/commands/buildindex.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
from api import models as v1
1010
from api_v2 import models as v2
11+
from search import models as search
1112

1213
class Command(BaseCommand):
1314
"""Implementation for the `manage.py `index_v1` subcommand."""
@@ -31,8 +32,8 @@ def add_arguments(self, parser: argparse.ArgumentParser):
3132
)
3233

3334
def unload_all_content(self):
34-
object_count = v2.SearchResult.objects.all().count()
35-
v2.SearchResult.objects.all().delete()
35+
object_count = search.SearchResult.objects.all().count()
36+
search.SearchResult.objects.all().delete()
3637
print("UNLOADED_OBJECT_COUNT:{}".format(object_count))
3738

3839
def load_v1_content(self, model):
@@ -42,7 +43,7 @@ def load_v1_content(self, model):
4243

4344
if model.__name__ in standard_v1_models:
4445
for o in model.objects.all():
45-
results.append(v2.SearchResult(
46+
results.append(search.SearchResult(
4647
document_pk=o.document.slug,
4748
object_pk=o.slug,
4849
object_name=o.name,
@@ -59,7 +60,7 @@ def load_v2_content(self, model):
5960

6061
if model.__name__ in standard_v2_models:
6162
for o in model.objects.all():
62-
results.append(v2.SearchResult(
63+
results.append(search.SearchResult(
6364
document_pk=o.document.key,
6465
object_pk=o.pk,
6566
object_name=o.name,
@@ -77,12 +78,12 @@ def load_content(self,model,schema):
7778
model._meta.db_table))
7879

7980
if schema == 'v1':
80-
v2.SearchResult.objects.bulk_create(
81+
search.SearchResult.objects.bulk_create(
8182
self.load_v1_content(model)
8283
)
8384

8485
if schema == 'v2':
85-
v2.SearchResult.objects.bulk_create(
86+
search.SearchResult.objects.bulk_create(
8687
self.load_v2_content(model)
8788
)
8889

@@ -99,7 +100,7 @@ def load_index(self):
99100
"INSERT INTO search_index " +
100101
"(document_pk,object_pk,object_name,object_model,text,schema_version) " +
101102
"SELECT document_pk,object_pk,object_name,object_model,text,schema_version " +
102-
"FROM api_v2_searchresult")
103+
"FROM search_searchresult")
103104

104105
def check_fts_enabled(self):
105106
#import sqlite3

search/migrations/0001_initial.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Generated by Django 5.1.2 on 2025-03-13 15:23
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
initial = True
9+
10+
dependencies = [
11+
]
12+
13+
operations = [
14+
migrations.CreateModel(
15+
name='SearchResult',
16+
fields=[
17+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18+
('document_pk', models.CharField(max_length=255)),
19+
('object_pk', models.CharField(max_length=255)),
20+
('object_name', models.CharField(max_length=100)),
21+
('object_model', models.CharField(max_length=255)),
22+
('schema_version', models.CharField(max_length=100)),
23+
('rank', models.DecimalField(decimal_places=4, default=None, max_digits=10, null=True)),
24+
('text', models.TextField(default=None, null=True)),
25+
('highlighted', models.TextField(default=None, null=True)),
26+
],
27+
),
28+
]

0 commit comments

Comments
 (0)