0001_initial.py 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. # Generated by Django 4.2.6 on 2023-10-20 01:22
  2. from django.conf import settings
  3. import django.contrib.postgres.indexes
  4. import django.contrib.postgres.search
  5. from django.db import migrations, models
  6. import django.db.models.deletion
  7. import psqlextra.backend.migrations.operations.add_default_partition
  8. import psqlextra.backend.migrations.operations.create_partitioned_model
  9. import psqlextra.manager.manager
  10. import psqlextra.models.partitioned
  11. import psqlextra.types
  12. import uuid
  13. class Migration(migrations.Migration):
  14. initial = True
  15. dependencies = [
  16. ("issues", "0013_alter_comment_options_alter_issue_unique_together_and_more"),
  17. migrations.swappable_dependency(settings.AUTH_USER_MODEL),
  18. ("projects", "0013_merge_20231017_1350"),
  19. ]
  20. operations = [
  21. migrations.CreateModel(
  22. name="Comment",
  23. fields=[
  24. (
  25. "id",
  26. models.BigAutoField(
  27. auto_created=True,
  28. primary_key=True,
  29. serialize=False,
  30. verbose_name="ID",
  31. ),
  32. ),
  33. ("created", models.DateTimeField(auto_now_add=True)),
  34. ("text", models.TextField(blank=True, null=True)),
  35. (
  36. "issue",
  37. models.ForeignKey(
  38. on_delete=django.db.models.deletion.CASCADE,
  39. related_name="comments",
  40. to="issues.issue",
  41. ),
  42. ),
  43. (
  44. "user",
  45. models.ForeignKey(
  46. null=True,
  47. on_delete=django.db.models.deletion.SET_NULL,
  48. related_name="+",
  49. to=settings.AUTH_USER_MODEL,
  50. ),
  51. ),
  52. ],
  53. options={
  54. "ordering": ("-created",),
  55. },
  56. ),
  57. migrations.CreateModel(
  58. name="Issue",
  59. fields=[
  60. (
  61. "id",
  62. models.BigAutoField(
  63. auto_created=True,
  64. primary_key=True,
  65. serialize=False,
  66. verbose_name="ID",
  67. ),
  68. ),
  69. ("created", models.DateTimeField(auto_now_add=True)),
  70. ("culprit", models.CharField(blank=True, max_length=1024, null=True)),
  71. ("is_public", models.BooleanField(default=False)),
  72. (
  73. "level",
  74. models.PositiveSmallIntegerField(
  75. choices=[
  76. (0, "sample"),
  77. (1, "debug"),
  78. (2, "info"),
  79. (3, "warning"),
  80. (4, "error"),
  81. (5, "fatal"),
  82. ],
  83. default=4,
  84. ),
  85. ),
  86. ("title", models.CharField(max_length=255)),
  87. (
  88. "type",
  89. models.PositiveSmallIntegerField(
  90. choices=[(0, "default"), (1, "error"), (2, "csp")], default=0
  91. ),
  92. ),
  93. (
  94. "status",
  95. models.PositiveSmallIntegerField(
  96. choices=[(0, "unresolved"), (1, "resolved"), (2, "ignored")],
  97. default=0,
  98. ),
  99. ),
  100. ("short_id", models.PositiveIntegerField(null=True)),
  101. (
  102. "project",
  103. models.ForeignKey(
  104. on_delete=django.db.models.deletion.CASCADE,
  105. related_name="issues",
  106. to="projects.project",
  107. ),
  108. ),
  109. ],
  110. ),
  111. psqlextra.backend.migrations.operations.create_partitioned_model.PostgresCreatePartitionedModel(
  112. name="IssueEvent",
  113. fields=[
  114. (
  115. "id",
  116. models.UUIDField(
  117. default=uuid.uuid4,
  118. editable=False,
  119. primary_key=True,
  120. serialize=False,
  121. ),
  122. ),
  123. (
  124. "type",
  125. models.PositiveSmallIntegerField(
  126. choices=[(0, "default"), (1, "error"), (2, "csp")], default=0
  127. ),
  128. ),
  129. ("created", models.DateTimeField(auto_now_add=True)),
  130. ("data", models.JSONField()),
  131. (
  132. "issue",
  133. models.ForeignKey(
  134. on_delete=django.db.models.deletion.CASCADE,
  135. to="issue_events.issue",
  136. ),
  137. ),
  138. ],
  139. options={
  140. "abstract": False,
  141. "base_manager_name": "objects",
  142. },
  143. partitioning_options={
  144. "method": psqlextra.types.PostgresPartitioningMethod["RANGE"],
  145. "key": ["created"],
  146. },
  147. bases=(psqlextra.models.partitioned.PostgresPartitionedModel,),
  148. managers=[
  149. ("objects", psqlextra.manager.manager.PostgresManager()),
  150. ],
  151. ),
  152. psqlextra.backend.migrations.operations.add_default_partition.PostgresAddDefaultPartition(
  153. model_name="IssueEvent",
  154. name="default",
  155. ),
  156. migrations.CreateModel(
  157. name="IssueHash",
  158. fields=[
  159. (
  160. "id",
  161. models.BigAutoField(
  162. auto_created=True,
  163. primary_key=True,
  164. serialize=False,
  165. verbose_name="ID",
  166. ),
  167. ),
  168. ("value", models.UUIDField(db_index=True)),
  169. (
  170. "issue",
  171. models.ForeignKey(
  172. on_delete=django.db.models.deletion.CASCADE,
  173. related_name="hashes",
  174. to="issues.issue",
  175. ),
  176. ),
  177. (
  178. "project",
  179. models.ForeignKey(
  180. on_delete=django.db.models.deletion.CASCADE,
  181. related_name="+",
  182. to="projects.project",
  183. ),
  184. ),
  185. ],
  186. ),
  187. migrations.CreateModel(
  188. name="IssueStats",
  189. fields=[
  190. (
  191. "issue",
  192. models.OneToOneField(
  193. on_delete=django.db.models.deletion.CASCADE,
  194. primary_key=True,
  195. serialize=False,
  196. to="issue_events.issue",
  197. ),
  198. ),
  199. (
  200. "search_vector",
  201. django.contrib.postgres.search.SearchVectorField(
  202. editable=False, null=True
  203. ),
  204. ),
  205. ("search_vector_created", models.DateTimeField(auto_now_add=True)),
  206. ("count", models.PositiveIntegerField(default=1, editable=False)),
  207. ("last_seen", models.DateTimeField(auto_now_add=True, db_index=True)),
  208. ],
  209. options={
  210. "indexes": [
  211. django.contrib.postgres.indexes.GinIndex(
  212. fields=["search_vector"], name="issue_event_search__0754e8_gin"
  213. )
  214. ],
  215. },
  216. ),
  217. migrations.AddConstraint(
  218. model_name="issuehash",
  219. constraint=models.UniqueConstraint(
  220. fields=("project", "value"), name="issue hash project"
  221. ),
  222. ),
  223. migrations.AlterUniqueTogether(
  224. name="issue",
  225. unique_together={("project", "short_id")},
  226. ),
  227. ]