@@ -18,44 +18,72 @@ def unload_all_content(self):
1818 v2 .SearchResult .objects .all ().delete ()
1919 print ("UNLOADED_OBJECT_COUNT:{}" .format (object_count ))
2020
21-
22- def load_content (self ,model ,schema ):
23- print ("SCHEMA:{} OBJECT_COUNT:{} MODEL:{} TABLE_NAME:{}" .format (
24- schema ,
25- model .objects .all ().count (),
26- model .__name__ ,
27- model ._meta .db_table ))
28-
21+ def load_v1_content (self , model ):
22+ results = []
2923 standard_v1_models = ['MagicItem' ,'Spell' ,'Monster' ,'CharClass' ,'Archetype' ,
30- 'Race' ,'Subrace' ,'Plane' ,'Section' ,'Feat' ,'Condition' ,'Background' ,'Weapon' ,'Armor' ]
31-
32- search_results = []
24+ 'Race' ,'Subrace' ,'Plane' ,'Section' ,'Feat' ,'Condition' ,'Background' ,'Weapon' ,'Armor' ]
3325
34- if model .__name__ in standard_v1_models and schema == 'v1' :
26+ if model .__name__ in standard_v1_models :
3527 for o in model .objects .all ():
36- search_results .append (v2 .SearchResult (
28+ results .append (v2 .SearchResult (
3729 document_pk = o .document .slug ,
38- document_name = o .document .title ,
3930 object_pk = o .slug ,
4031 object_name = o .name ,
41- object_route = o .route ,
32+ object_model = o .__class__ . __name__ ,
4233 schema_version = "v1" ,
4334 text = o .name + "\n " + o .desc
4435
4536 ))
37+ return results
4638
47- v2 .SearchResult .objects .bulk_create (search_results )
39+ def load_v2_content (self , model ):
40+ results = []
41+ standard_v2_models = ['Item' ,'Spell' ,'Creature' ,'CharacterClass' ,'Race' ,'Feat' ,'Condition' ,'Background' ]
4842
43+ if model .__name__ in standard_v2_models :
44+ for o in model .objects .all ():
45+ results .append (v2 .SearchResult (
46+ document_pk = o .document .key ,
47+ object_pk = o .pk ,
48+ object_name = o .name ,
49+ object_model = o .__class__ .__name__ ,
50+ schema_version = 'v2' ,
51+ text = o .as_text ()
52+ ))
53+ return results
54+
55+ def load_content (self ,model ,schema ):
56+ print ("SCHEMA:{} OBJECT_COUNT:{} MODEL:{} TABLE_NAME:{}" .format (
57+ schema ,
58+ model .objects .all ().count (),
59+ model .__name__ ,
60+ model ._meta .db_table ))
61+
62+ if schema == 'v1' :
63+ v2 .SearchResult .objects .bulk_create (
64+ self .load_v1_content (model )
65+ )
66+
67+ if schema == 'v2' :
68+ v2 .SearchResult .objects .bulk_create (
69+ self .load_v2_content (model )
70+ )
4971
5072 def load_index (self ):
5173 with connection .cursor () as cursor :
5274
5375 cursor .execute ("DROP TABLE IF EXISTS search_index;" )
54-
55- cursor .execute ("CREATE VIRTUAL TABLE search_index USING FTS5(document_pk,document_name,object_pk,object_name,object_route,text,schema_version);" )
5676
57- cursor .execute ("INSERT INTO search_index (document_pk,document_name,object_pk,object_name,object_route,text,schema_version) SELECT document_pk,document_name,object_pk,object_name,object_route,text,schema_version FROM api_v2_searchresult" )
58-
77+ cursor .execute (
78+ "CREATE VIRTUAL TABLE search_index " +
79+ "USING FTS5(document_pk,object_pk,object_name,object_model,text,schema_version);" )
80+
81+ cursor .execute (
82+ "INSERT INTO search_index " +
83+ "(document_pk,object_pk,object_name,object_model,text,schema_version) " +
84+ "SELECT document_pk,object_pk,object_name,object_model,text,schema_version " +
85+ "FROM api_v2_searchresult" )
86+
5987
6088 def check_fts_enabled (self ):
6189 #import sqlite3
@@ -91,6 +119,15 @@ def handle(self, *args, **options) -> None:
91119 self .load_content (v1 .Weapon ,"v1" )
92120 self .load_content (v1 .Armor ,"v1" )
93121
122+ self .load_content (v2 .Item ,"v2" )
123+ self .load_content (v2 .Spell ,"v2" )
124+ self .load_content (v2 .Creature ,"v2" )
125+ self .load_content (v2 .CharacterClass ,"v2" )
126+ self .load_content (v2 .Race ,"v2" )
127+ self .load_content (v2 .Feat ,"v2" )
128+ self .load_content (v2 .Condition ,"v2" )
129+ self .load_content (v2 .Background ,"v2" )
130+
94131
95132 # Take the content table's current data and load it into the index.
96133 self .load_index ()
0 commit comments