davidtran999 commited on
Commit
eaca2c2
·
verified ·
1 Parent(s): ccc5f31

Upload backend/core/migrations/0001_enable_bm25.py with huggingface_hub

Browse files
backend/core/migrations/0001_enable_bm25.py ADDED
@@ -0,0 +1,184 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from django.contrib.postgres.operations import UnaccentExtension, TrigramExtension
2
+ from django.contrib.postgres.search import SearchVectorField
3
+ from django.contrib.postgres.indexes import GinIndex
4
+ from django.db import migrations
5
+
6
+
7
+ CREATE_PROCEDURE_TRIGGER = """
8
+ DROP TRIGGER IF EXISTS core_procedure_tsv_update ON core_procedure;
9
+ DROP FUNCTION IF EXISTS core_procedure_tsv_trigger();
10
+ CREATE FUNCTION core_procedure_tsv_trigger() RETURNS trigger AS $$
11
+ BEGIN
12
+ NEW.tsv_body := to_tsvector('simple',
13
+ unaccent(coalesce(NEW.title, '')) || ' ' ||
14
+ unaccent(coalesce(NEW.domain, '')) || ' ' ||
15
+ unaccent(coalesce(NEW.level, '')) || ' ' ||
16
+ unaccent(coalesce(NEW.conditions, '')) || ' ' ||
17
+ unaccent(coalesce(NEW.dossier, ''))
18
+ );
19
+ RETURN NEW;
20
+ END
21
+ $$ LANGUAGE plpgsql;
22
+
23
+ CREATE TRIGGER core_procedure_tsv_update
24
+ BEFORE INSERT OR UPDATE ON core_procedure
25
+ FOR EACH ROW EXECUTE PROCEDURE core_procedure_tsv_trigger();
26
+
27
+ UPDATE core_procedure SET tsv_body = to_tsvector('simple',
28
+ unaccent(coalesce(title, '')) || ' ' ||
29
+ unaccent(coalesce(domain, '')) || ' ' ||
30
+ unaccent(coalesce(level, '')) || ' ' ||
31
+ unaccent(coalesce(conditions, '')) || ' ' ||
32
+ unaccent(coalesce(dossier, ''))
33
+ );
34
+ """
35
+
36
+ DROP_PROCEDURE_TRIGGER = """
37
+ DROP TRIGGER IF EXISTS core_procedure_tsv_update ON core_procedure;
38
+ DROP FUNCTION IF EXISTS core_procedure_tsv_trigger();
39
+ """
40
+
41
+ CREATE_FINE_TRIGGER = """
42
+ DROP TRIGGER IF EXISTS core_fine_tsv_update ON core_fine;
43
+ DROP FUNCTION IF EXISTS core_fine_tsv_trigger();
44
+ CREATE FUNCTION core_fine_tsv_trigger() RETURNS trigger AS $$
45
+ BEGIN
46
+ NEW.tsv_body := to_tsvector('simple',
47
+ unaccent(coalesce(NEW.name, '')) || ' ' ||
48
+ unaccent(coalesce(NEW.code, '')) || ' ' ||
49
+ unaccent(coalesce(NEW.article, '')) || ' ' ||
50
+ unaccent(coalesce(NEW.decree, '')) || ' ' ||
51
+ unaccent(coalesce(NEW.remedial, ''))
52
+ );
53
+ RETURN NEW;
54
+ END
55
+ $$ LANGUAGE plpgsql;
56
+
57
+ CREATE TRIGGER core_fine_tsv_update
58
+ BEFORE INSERT OR UPDATE ON core_fine
59
+ FOR EACH ROW EXECUTE PROCEDURE core_fine_tsv_trigger();
60
+
61
+ UPDATE core_fine SET tsv_body = to_tsvector('simple',
62
+ unaccent(coalesce(name, '')) || ' ' ||
63
+ unaccent(coalesce(code, '')) || ' ' ||
64
+ unaccent(coalesce(article, '')) || ' ' ||
65
+ unaccent(coalesce(decree, '')) || ' ' ||
66
+ unaccent(coalesce(remedial, ''))
67
+ );
68
+ """
69
+
70
+ DROP_FINE_TRIGGER = """
71
+ DROP TRIGGER IF EXISTS core_fine_tsv_update ON core_fine;
72
+ DROP FUNCTION IF EXISTS core_fine_tsv_trigger();
73
+ """
74
+
75
+ CREATE_OFFICE_TRIGGER = """
76
+ DROP TRIGGER IF EXISTS core_office_tsv_update ON core_office;
77
+ DROP FUNCTION IF EXISTS core_office_tsv_trigger();
78
+ CREATE FUNCTION core_office_tsv_trigger() RETURNS trigger AS $$
79
+ BEGIN
80
+ NEW.tsv_body := to_tsvector('simple',
81
+ unaccent(coalesce(NEW.unit_name, '')) || ' ' ||
82
+ unaccent(coalesce(NEW.address, '')) || ' ' ||
83
+ unaccent(coalesce(NEW.district, '')) || ' ' ||
84
+ unaccent(coalesce(NEW.service_scope, ''))
85
+ );
86
+ RETURN NEW;
87
+ END
88
+ $$ LANGUAGE plpgsql;
89
+
90
+ CREATE TRIGGER core_office_tsv_update
91
+ BEFORE INSERT OR UPDATE ON core_office
92
+ FOR EACH ROW EXECUTE PROCEDURE core_office_tsv_trigger();
93
+
94
+ UPDATE core_office SET tsv_body = to_tsvector('simple',
95
+ unaccent(coalesce(unit_name, '')) || ' ' ||
96
+ unaccent(coalesce(address, '')) || ' ' ||
97
+ unaccent(coalesce(district, '')) || ' ' ||
98
+ unaccent(coalesce(service_scope, ''))
99
+ );
100
+ """
101
+
102
+ DROP_OFFICE_TRIGGER = """
103
+ DROP TRIGGER IF EXISTS core_office_tsv_update ON core_office;
104
+ DROP FUNCTION IF EXISTS core_office_tsv_trigger();
105
+ """
106
+
107
+ CREATE_ADVISORY_TRIGGER = """
108
+ DROP TRIGGER IF EXISTS core_advisory_tsv_update ON core_advisory;
109
+ DROP FUNCTION IF EXISTS core_advisory_tsv_trigger();
110
+ CREATE FUNCTION core_advisory_tsv_trigger() RETURNS trigger AS $$
111
+ BEGIN
112
+ NEW.tsv_body := to_tsvector('simple',
113
+ unaccent(coalesce(NEW.title, '')) || ' ' ||
114
+ unaccent(coalesce(NEW.summary, ''))
115
+ );
116
+ RETURN NEW;
117
+ END
118
+ $$ LANGUAGE plpgsql;
119
+
120
+ CREATE TRIGGER core_advisory_tsv_update
121
+ BEFORE INSERT OR UPDATE ON core_advisory
122
+ FOR EACH ROW EXECUTE PROCEDURE core_advisory_tsv_trigger();
123
+
124
+ UPDATE core_advisory SET tsv_body = to_tsvector('simple',
125
+ unaccent(coalesce(title, '')) || ' ' ||
126
+ unaccent(coalesce(summary, ''))
127
+ );
128
+ """
129
+
130
+ DROP_ADVISORY_TRIGGER = """
131
+ DROP TRIGGER IF EXISTS core_advisory_tsv_update ON core_advisory;
132
+ DROP FUNCTION IF EXISTS core_advisory_tsv_trigger();
133
+ """
134
+
135
+
136
+ class Migration(migrations.Migration):
137
+ dependencies = [
138
+ ("core", "0000_initial"),
139
+ ]
140
+
141
+ operations = [
142
+ UnaccentExtension(),
143
+ TrigramExtension(),
144
+ migrations.AddField(
145
+ model_name="procedure",
146
+ name="tsv_body",
147
+ field=SearchVectorField(null=True, editable=False),
148
+ ),
149
+ migrations.AddField(
150
+ model_name="fine",
151
+ name="tsv_body",
152
+ field=SearchVectorField(null=True, editable=False),
153
+ ),
154
+ migrations.AddField(
155
+ model_name="office",
156
+ name="tsv_body",
157
+ field=SearchVectorField(null=True, editable=False),
158
+ ),
159
+ migrations.AddField(
160
+ model_name="advisory",
161
+ name="tsv_body",
162
+ field=SearchVectorField(null=True, editable=False),
163
+ ),
164
+ migrations.AddIndex(
165
+ model_name="procedure",
166
+ index=GinIndex(fields=["tsv_body"], name="procedure_tsv_idx"),
167
+ ),
168
+ migrations.AddIndex(
169
+ model_name="fine",
170
+ index=GinIndex(fields=["tsv_body"], name="fine_tsv_idx"),
171
+ ),
172
+ migrations.AddIndex(
173
+ model_name="office",
174
+ index=GinIndex(fields=["tsv_body"], name="office_tsv_idx"),
175
+ ),
176
+ migrations.AddIndex(
177
+ model_name="advisory",
178
+ index=GinIndex(fields=["tsv_body"], name="advisory_tsv_idx"),
179
+ ),
180
+ migrations.RunSQL(sql=CREATE_PROCEDURE_TRIGGER, reverse_sql=DROP_PROCEDURE_TRIGGER),
181
+ migrations.RunSQL(sql=CREATE_FINE_TRIGGER, reverse_sql=DROP_FINE_TRIGGER),
182
+ migrations.RunSQL(sql=CREATE_OFFICE_TRIGGER, reverse_sql=DROP_OFFICE_TRIGGER),
183
+ migrations.RunSQL(sql=CREATE_ADVISORY_TRIGGER, reverse_sql=DROP_ADVISORY_TRIGGER),
184
+ ]