1
0

20200929113117_Init.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285
  1. using System;
  2. using System.Net;
  3. using Microsoft.EntityFrameworkCore.Migrations;
  4. using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
  5. namespace Content.Server.Database.Migrations.Postgres
  6. {
  7. public partial class Init : Migration
  8. {
  9. protected override void Up(MigrationBuilder migrationBuilder)
  10. {
  11. migrationBuilder.CreateTable(
  12. name: "assigned_user_id",
  13. columns: table => new
  14. {
  15. assigned_user_id_id = table.Column<int>(nullable: false)
  16. .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
  17. user_name = table.Column<string>(nullable: false),
  18. user_id = table.Column<Guid>(nullable: false)
  19. },
  20. constraints: table =>
  21. {
  22. table.PrimaryKey("PK_assigned_user_id", x => x.assigned_user_id_id);
  23. });
  24. migrationBuilder.CreateTable(
  25. name: "connection_log",
  26. columns: table => new
  27. {
  28. connection_log_id = table.Column<int>(nullable: false)
  29. .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
  30. user_id = table.Column<Guid>(nullable: false),
  31. user_name = table.Column<string>(nullable: false),
  32. time = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
  33. address = table.Column<IPAddress>(nullable: false)
  34. },
  35. constraints: table =>
  36. {
  37. table.PrimaryKey("PK_connection_log", x => x.connection_log_id);
  38. table.CheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address");
  39. });
  40. migrationBuilder.CreateTable(
  41. name: "player",
  42. columns: table => new
  43. {
  44. player_id = table.Column<int>(nullable: false)
  45. .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
  46. user_id = table.Column<Guid>(nullable: false),
  47. first_seen_time = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
  48. last_seen_user_name = table.Column<string>(nullable: false),
  49. last_seen_time = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
  50. last_seen_address = table.Column<IPAddress>(nullable: false)
  51. },
  52. constraints: table =>
  53. {
  54. table.PrimaryKey("PK_player", x => x.player_id);
  55. table.CheckConstraint("LastSeenAddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= last_seen_address");
  56. });
  57. migrationBuilder.CreateTable(
  58. name: "preference",
  59. columns: table => new
  60. {
  61. preference_id = table.Column<int>(nullable: false)
  62. .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
  63. user_id = table.Column<Guid>(nullable: false),
  64. selected_character_slot = table.Column<int>(nullable: false)
  65. },
  66. constraints: table =>
  67. {
  68. table.PrimaryKey("PK_preference", x => x.preference_id);
  69. });
  70. migrationBuilder.CreateTable(
  71. name: "server_ban",
  72. columns: table => new
  73. {
  74. server_ban_id = table.Column<int>(nullable: false)
  75. .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
  76. user_id = table.Column<Guid>(nullable: true),
  77. address = table.Column<ValueTuple<IPAddress, int>>(type: "inet", nullable: true),
  78. ban_time = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
  79. expiration_time = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
  80. reason = table.Column<string>(nullable: false),
  81. banning_admin = table.Column<Guid>(nullable: true)
  82. },
  83. constraints: table =>
  84. {
  85. table.PrimaryKey("PK_server_ban", x => x.server_ban_id);
  86. table.CheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address");
  87. table.CheckConstraint("HaveEitherAddressOrUserId", "address IS NOT NULL OR user_id IS NOT NULL");
  88. });
  89. migrationBuilder.CreateTable(
  90. name: "profile",
  91. columns: table => new
  92. {
  93. profile_id = table.Column<int>(nullable: false)
  94. .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
  95. slot = table.Column<int>(nullable: false),
  96. char_name = table.Column<string>(nullable: false),
  97. age = table.Column<int>(nullable: false),
  98. sex = table.Column<string>(nullable: false),
  99. hair_name = table.Column<string>(nullable: false),
  100. hair_color = table.Column<string>(nullable: false),
  101. facial_hair_name = table.Column<string>(nullable: false),
  102. facial_hair_color = table.Column<string>(nullable: false),
  103. eye_color = table.Column<string>(nullable: false),
  104. skin_color = table.Column<string>(nullable: false),
  105. pref_unavailable = table.Column<int>(nullable: false),
  106. preference_id = table.Column<int>(nullable: false)
  107. },
  108. constraints: table =>
  109. {
  110. table.PrimaryKey("PK_profile", x => x.profile_id);
  111. table.ForeignKey(
  112. name: "FK_profile_preference_preference_id",
  113. column: x => x.preference_id,
  114. principalTable: "preference",
  115. principalColumn: "preference_id",
  116. onDelete: ReferentialAction.Cascade);
  117. });
  118. migrationBuilder.CreateTable(
  119. name: "server_unban",
  120. columns: table => new
  121. {
  122. unban_id = table.Column<int>(nullable: false)
  123. .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
  124. ban_id = table.Column<int>(nullable: false),
  125. unbanning_admin = table.Column<Guid>(nullable: true),
  126. unban_time = table.Column<DateTime>(type: "timestamp with time zone", nullable: false)
  127. },
  128. constraints: table =>
  129. {
  130. table.PrimaryKey("PK_server_unban", x => x.unban_id);
  131. table.ForeignKey(
  132. name: "FK_server_unban_server_ban_ban_id",
  133. column: x => x.ban_id,
  134. principalTable: "server_ban",
  135. principalColumn: "server_ban_id",
  136. onDelete: ReferentialAction.Cascade);
  137. });
  138. migrationBuilder.CreateTable(
  139. name: "antag",
  140. columns: table => new
  141. {
  142. antag_id = table.Column<int>(nullable: false)
  143. .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
  144. profile_id = table.Column<int>(nullable: false),
  145. antag_name = table.Column<string>(nullable: false)
  146. },
  147. constraints: table =>
  148. {
  149. table.PrimaryKey("PK_antag", x => x.antag_id);
  150. table.ForeignKey(
  151. name: "FK_antag_profile_profile_id",
  152. column: x => x.profile_id,
  153. principalTable: "profile",
  154. principalColumn: "profile_id",
  155. onDelete: ReferentialAction.Cascade);
  156. });
  157. migrationBuilder.CreateTable(
  158. name: "job",
  159. columns: table => new
  160. {
  161. job_id = table.Column<int>(nullable: false)
  162. .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
  163. profile_id = table.Column<int>(nullable: false),
  164. job_name = table.Column<string>(nullable: false),
  165. priority = table.Column<int>(nullable: false)
  166. },
  167. constraints: table =>
  168. {
  169. table.PrimaryKey("PK_job", x => x.job_id);
  170. table.ForeignKey(
  171. name: "FK_job_profile_profile_id",
  172. column: x => x.profile_id,
  173. principalTable: "profile",
  174. principalColumn: "profile_id",
  175. onDelete: ReferentialAction.Cascade);
  176. });
  177. migrationBuilder.CreateIndex(
  178. name: "IX_antag_profile_id_antag_name",
  179. table: "antag",
  180. columns: new[] { "profile_id", "antag_name" },
  181. unique: true);
  182. migrationBuilder.CreateIndex(
  183. name: "IX_assigned_user_id_user_id",
  184. table: "assigned_user_id",
  185. column: "user_id",
  186. unique: true);
  187. migrationBuilder.CreateIndex(
  188. name: "IX_assigned_user_id_user_name",
  189. table: "assigned_user_id",
  190. column: "user_name",
  191. unique: true);
  192. migrationBuilder.CreateIndex(
  193. name: "IX_connection_log_user_id",
  194. table: "connection_log",
  195. column: "user_id");
  196. migrationBuilder.CreateIndex(
  197. name: "IX_job_profile_id",
  198. table: "job",
  199. column: "profile_id");
  200. migrationBuilder.CreateIndex(
  201. name: "IX_player_user_id",
  202. table: "player",
  203. column: "user_id",
  204. unique: true);
  205. migrationBuilder.CreateIndex(
  206. name: "IX_preference_user_id",
  207. table: "preference",
  208. column: "user_id",
  209. unique: true);
  210. migrationBuilder.CreateIndex(
  211. name: "IX_profile_preference_id",
  212. table: "profile",
  213. column: "preference_id");
  214. migrationBuilder.CreateIndex(
  215. name: "IX_profile_slot_preference_id",
  216. table: "profile",
  217. columns: new[] { "slot", "preference_id" },
  218. unique: true);
  219. migrationBuilder.CreateIndex(
  220. name: "IX_server_ban_address",
  221. table: "server_ban",
  222. column: "address");
  223. migrationBuilder.CreateIndex(
  224. name: "IX_server_ban_user_id",
  225. table: "server_ban",
  226. column: "user_id");
  227. migrationBuilder.CreateIndex(
  228. name: "IX_server_unban_ban_id",
  229. table: "server_unban",
  230. column: "ban_id",
  231. unique: true);
  232. }
  233. protected override void Down(MigrationBuilder migrationBuilder)
  234. {
  235. migrationBuilder.DropTable(
  236. name: "antag");
  237. migrationBuilder.DropTable(
  238. name: "assigned_user_id");
  239. migrationBuilder.DropTable(
  240. name: "connection_log");
  241. migrationBuilder.DropTable(
  242. name: "job");
  243. migrationBuilder.DropTable(
  244. name: "player");
  245. migrationBuilder.DropTable(
  246. name: "server_unban");
  247. migrationBuilder.DropTable(
  248. name: "profile");
  249. migrationBuilder.DropTable(
  250. name: "server_ban");
  251. migrationBuilder.DropTable(
  252. name: "preference");
  253. }
  254. }
  255. }