17 {
18#pragma warning disable 612, 618
19 modelBuilder
20 .HasAnnotation("ProductVersion", "2.2.6-servicing-10079")
21 .HasAnnotation("Relational:MaxIdentifierLength", 128)
22 .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
23
24 modelBuilder.Entity("Tgstation.Server.Host.Models.ChatBot", b =>
25 {
26 b.Property<long>("Id")
27 .ValueGeneratedOnAdd()
28 .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
29
30 b.Property<string>("ConnectionString")
31 .IsRequired()
32 .HasMaxLength(10000);
33
34 b.Property<bool?>("Enabled");
35
36 b.Property<long>("InstanceId");
37
38 b.Property<string>("Name")
39 .IsRequired()
40 .HasMaxLength(100);
41
42 b.Property<int>("Provider");
43
44 b.Property<long>("ReconnectionInterval");
45
46 b.HasKey("Id");
47
48 b.HasIndex("InstanceId", "Name")
49 .IsUnique();
50
51 b.ToTable("ChatBots");
52 });
53
54 modelBuilder.Entity("Tgstation.Server.Host.Models.ChatChannel", b =>
55 {
56 b.Property<long>("Id")
57 .ValueGeneratedOnAdd()
58 .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
59
60 b.Property<long>("ChatSettingsId");
61
62 b.Property<decimal?>("DiscordChannelId")
63 .HasConversion(new ValueConverter<decimal, decimal>(v => default(decimal), v => default(decimal), new ConverterMappingHints(precision: 20, scale: 0)));
64
65 b.Property<string>("IrcChannel")
66 .HasMaxLength(100);
67
68 b.Property<bool?>("IsAdminChannel")
69 .IsRequired();
70
71 b.Property<bool?>("IsUpdatesChannel")
72 .IsRequired();
73
74 b.Property<bool?>("IsWatchdogChannel")
75 .IsRequired();
76
77 b.Property<string>("Tag")
78 .HasMaxLength(10000);
79
80 b.HasKey("Id");
81
82 b.HasIndex("ChatSettingsId", "DiscordChannelId")
83 .IsUnique()
84 .HasFilter("[DiscordChannelId] IS NOT NULL");
85
86 b.HasIndex("ChatSettingsId", "IrcChannel")
87 .IsUnique()
88 .HasFilter("[IrcChannel] IS NOT NULL");
89
90 b.ToTable("ChatChannels");
91 });
92
93 modelBuilder.Entity("Tgstation.Server.Host.Models.CompileJob", b =>
94 {
95 b.Property<long>("Id")
96 .ValueGeneratedOnAdd()
97 .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
98
99 b.Property<string>("ByondVersion")
100 .IsRequired();
101
102 b.Property<int?>("DMApiMajorVersion");
103
104 b.Property<int?>("DMApiMinorVersion");
105
106 b.Property<int?>("DMApiPatchVersion");
107
108 b.Property<Guid?>("DirectoryName")
109 .IsRequired();
110
111 b.Property<string>("DmeName")
112 .IsRequired();
113
114 b.Property<long>("JobId");
115
116 b.Property<int>("MinimumSecurityLevel");
117
118 b.Property<string>("Output")
119 .IsRequired();
120
121 b.Property<long>("RevisionInformationId");
122
123 b.HasKey("Id");
124
125 b.HasIndex("DirectoryName");
126
127 b.HasIndex("JobId")
128 .IsUnique();
129
130 b.HasIndex("RevisionInformationId");
131
132 b.ToTable("CompileJobs");
133 });
134
135 modelBuilder.Entity("Tgstation.Server.Host.Models.DreamDaemonSettings", b =>
136 {
137 b.Property<long>("Id")
138 .ValueGeneratedOnAdd()
139 .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
140
141 b.Property<string>("AccessToken");
142
143 b.Property<bool?>("AllowWebClient")
144 .IsRequired();
145
146 b.Property<bool?>("AutoStart")
147 .IsRequired();
148
149 b.Property<long>("InstanceId");
150
151 b.Property<int>("PrimaryPort");
152
153 b.Property<int?>("ProcessId");
154
155 b.Property<int>("SecondaryPort");
156
157 b.Property<int>("SecurityLevel");
158
159 b.Property<bool?>("SoftRestart")
160 .IsRequired();
161
162 b.Property<bool?>("SoftShutdown")
163 .IsRequired();
164
165 b.Property<long>("StartupTimeout");
166
167 b.HasKey("Id");
168
169 b.HasIndex("InstanceId")
170 .IsUnique();
171
172 b.ToTable("DreamDaemonSettings");
173 });
174
175 modelBuilder.Entity("Tgstation.Server.Host.Models.DreamMakerSettings", b =>
176 {
177 b.Property<long>("Id")
178 .ValueGeneratedOnAdd()
179 .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
180
181 b.Property<int>("ApiValidationPort");
182
183 b.Property<int>("ApiValidationSecurityLevel");
184
185 b.Property<long>("InstanceId");
186
187 b.Property<string>("ProjectName")
188 .HasMaxLength(10000);
189
190 b.HasKey("Id");
191
192 b.HasIndex("InstanceId")
193 .IsUnique();
194
195 b.ToTable("DreamMakerSettings");
196 });
197
198 modelBuilder.Entity("Tgstation.Server.Host.Models.Instance", b =>
199 {
200 b.Property<long>("Id")
201 .ValueGeneratedOnAdd()
202 .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
203
204 b.Property<long>("AutoUpdateInterval");
205
206 b.Property<int>("ConfigurationType");
207
208 b.Property<string>("Name")
209 .IsRequired()
210 .HasMaxLength(10000);
211
212 b.Property<bool?>("Online")
213 .IsRequired();
214
215 b.Property<string>("Path")
216 .IsRequired();
217
218 b.HasKey("Id");
219
220 b.HasIndex("Path")
221 .IsUnique();
222
223 b.ToTable("Instances");
224 });
225
226 modelBuilder.Entity("Tgstation.Server.Host.Models.InstanceUser", b =>
227 {
228 b.Property<long>("Id")
229 .ValueGeneratedOnAdd()
230 .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
231
232 b.Property<decimal>("ByondRights")
233 .HasConversion(new ValueConverter<decimal, decimal>(v => default(decimal), v => default(decimal), new ConverterMappingHints(precision: 20, scale: 0)));
234
235 b.Property<decimal>("ChatBotRights")
236 .HasConversion(new ValueConverter<decimal, decimal>(v => default(decimal), v => default(decimal), new ConverterMappingHints(precision: 20, scale: 0)));
237
238 b.Property<decimal>("ConfigurationRights")
239 .HasConversion(new ValueConverter<decimal, decimal>(v => default(decimal), v => default(decimal), new ConverterMappingHints(precision: 20, scale: 0)));
240
241 b.Property<decimal>("DreamDaemonRights")
242 .HasConversion(new ValueConverter<decimal, decimal>(v => default(decimal), v => default(decimal), new ConverterMappingHints(precision: 20, scale: 0)));
243
244 b.Property<decimal>("DreamMakerRights")
245 .HasConversion(new ValueConverter<decimal, decimal>(v => default(decimal), v => default(decimal), new ConverterMappingHints(precision: 20, scale: 0)));
246
247 b.Property<long>("InstanceId");
248
249 b.Property<decimal>("InstanceUserRights")
250 .HasConversion(new ValueConverter<decimal, decimal>(v => default(decimal), v => default(decimal), new ConverterMappingHints(precision: 20, scale: 0)));
251
252 b.Property<decimal>("RepositoryRights")
253 .HasConversion(new ValueConverter<decimal, decimal>(v => default(decimal), v => default(decimal), new ConverterMappingHints(precision: 20, scale: 0)));
254
255 b.Property<long?>("UserId")
256 .IsRequired();
257
258 b.HasKey("Id");
259
260 b.HasIndex("InstanceId");
261
262 b.HasIndex("UserId", "InstanceId")
263 .IsUnique();
264
265 b.ToTable("InstanceUsers");
266 });
267
268 modelBuilder.Entity("Tgstation.Server.Host.Models.Job", b =>
269 {
270 b.Property<long>("Id")
271 .ValueGeneratedOnAdd()
272 .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
273
274 b.Property<decimal?>("CancelRight")
275 .HasConversion(new ValueConverter<decimal, decimal>(v => default(decimal), v => default(decimal), new ConverterMappingHints(precision: 20, scale: 0)));
276
277 b.Property<decimal?>("CancelRightsType")
278 .HasConversion(new ValueConverter<decimal, decimal>(v => default(decimal), v => default(decimal), new ConverterMappingHints(precision: 20, scale: 0)));
279
280 b.Property<bool?>("Cancelled")
281 .IsRequired();
282
283 b.Property<long?>("CancelledById");
284
285 b.Property<string>("Description")
286 .IsRequired();
287
288 b.Property<string>("ExceptionDetails");
289
290 b.Property<long>("InstanceId");
291
292 b.Property<DateTimeOffset?>("StartedAt")
293 .IsRequired();
294
295 b.Property<long?>("StartedById")
296 .IsRequired();
297
298 b.Property<DateTimeOffset?>("StoppedAt");
299
300 b.HasKey("Id");
301
302 b.HasIndex("CancelledById");
303
304 b.HasIndex("InstanceId");
305
306 b.HasIndex("StartedById");
307
308 b.ToTable("Jobs");
309 });
310
311 modelBuilder.Entity("Tgstation.Server.Host.Models.ReattachInformation", b =>
312 {
313 b.Property<long>("Id")
314 .ValueGeneratedOnAdd()
315 .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
316
317 b.Property<string>("AccessIdentifier")
318 .IsRequired();
319
320 b.Property<string>("ChatChannelsJson")
321 .IsRequired();
322
323 b.Property<string>("ChatCommandsJson")
324 .IsRequired();
325
326 b.Property<long>("CompileJobId");
327
328 b.Property<bool>("IsPrimary");
329
330 b.Property<int>("Port");
331
332 b.Property<int>("ProcessId");
333
334 b.Property<int>("RebootState");
335
336 b.HasKey("Id");
337
338 b.HasIndex("CompileJobId");
339
340 b.ToTable("ReattachInformations");
341 });
342
343 modelBuilder.Entity("Tgstation.Server.Host.Models.RepositorySettings", b =>
344 {
345 b.Property<long>("Id")
346 .ValueGeneratedOnAdd()
347 .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
348
349 b.Property<string>("AccessToken")
350 .HasMaxLength(10000);
351
352 b.Property<string>("AccessUser")
353 .HasMaxLength(10000);
354
355 b.Property<bool?>("AutoUpdatesKeepTestMerges")
356 .IsRequired();
357
358 b.Property<bool?>("AutoUpdatesSynchronize")
359 .IsRequired();
360
361 b.Property<string>("CommitterEmail")
362 .IsRequired()
363 .HasMaxLength(10000);
364
365 b.Property<string>("CommitterName")
366 .IsRequired()
367 .HasMaxLength(10000);
368
369 b.Property<long>("InstanceId");
370
371 b.Property<bool?>("PostTestMergeComment")
372 .IsRequired();
373
374 b.Property<bool?>("PushTestMergeCommits")
375 .IsRequired();
376
377 b.Property<bool?>("ShowTestMergeCommitters")
378 .IsRequired();
379
380 b.HasKey("Id");
381
382 b.HasIndex("InstanceId")
383 .IsUnique();
384
385 b.ToTable("RepositorySettings");
386 });
387
388 modelBuilder.Entity("Tgstation.Server.Host.Models.RevInfoTestMerge", b =>
389 {
390 b.Property<long>("Id")
391 .ValueGeneratedOnAdd()
392 .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
393
394 b.Property<long>("RevisionInformationId");
395
396 b.Property<long>("TestMergeId");
397
398 b.HasKey("Id");
399
400 b.HasIndex("RevisionInformationId");
401
402 b.HasIndex("TestMergeId");
403
404 b.ToTable("RevInfoTestMerges");
405 });
406
407 modelBuilder.Entity("Tgstation.Server.Host.Models.RevisionInformation", b =>
408 {
409 b.Property<long>("Id")
410 .ValueGeneratedOnAdd()
411 .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
412
413 b.Property<string>("CommitSha")
414 .IsRequired()
415 .HasMaxLength(40);
416
417 b.Property<long>("InstanceId");
418
419 b.Property<string>("OriginCommitSha")
420 .IsRequired()
421 .HasMaxLength(40);
422
423 b.HasKey("Id");
424
425 b.HasIndex("InstanceId", "CommitSha")
426 .IsUnique();
427
428 b.ToTable("RevisionInformations");
429 });
430
431 modelBuilder.Entity("Tgstation.Server.Host.Models.TestMerge", b =>
432 {
433 b.Property<long>("Id")
434 .ValueGeneratedOnAdd()
435 .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
436
437 b.Property<string>("Author")
438 .IsRequired();
439
440 b.Property<string>("BodyAtMerge")
441 .IsRequired();
442
443 b.Property<string>("Comment")
444 .HasMaxLength(10000);
445
446 b.Property<DateTimeOffset>("MergedAt");
447
448 b.Property<long?>("MergedById")
449 .IsRequired();
450
451 b.Property<int>("Number");
452
453 b.Property<long?>("PrimaryRevisionInformationId")
454 .IsRequired();
455
456 b.Property<string>("PullRequestRevision")
457 .IsRequired()
458 .HasMaxLength(40);
459
460 b.Property<string>("TitleAtMerge")
461 .IsRequired();
462
463 b.Property<string>("Url")
464 .IsRequired();
465
466 b.HasKey("Id");
467
468 b.HasIndex("MergedById");
469
470 b.HasIndex("PrimaryRevisionInformationId")
471 .IsUnique();
472
473 b.ToTable("TestMerges");
474 });
475
476 modelBuilder.Entity("Tgstation.Server.Host.Models.User", b =>
477 {
478 b.Property<long?>("Id")
479 .ValueGeneratedOnAdd()
480 .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
481
482 b.Property<decimal>("AdministrationRights")
483 .HasConversion(new ValueConverter<decimal, decimal>(v => default(decimal), v => default(decimal), new ConverterMappingHints(precision: 20, scale: 0)));
484
485 b.Property<string>("CanonicalName")
486 .IsRequired();
487
488 b.Property<DateTimeOffset?>("CreatedAt")
489 .IsRequired();
490
491 b.Property<long?>("CreatedById");
492
493 b.Property<bool?>("Enabled")
494 .IsRequired();
495
496 b.Property<decimal>("InstanceManagerRights")
497 .HasConversion(new ValueConverter<decimal, decimal>(v => default(decimal), v => default(decimal), new ConverterMappingHints(precision: 20, scale: 0)));
498
499 b.Property<DateTimeOffset?>("LastPasswordUpdate");
500
501 b.Property<string>("Name")
502 .IsRequired()
503 .HasMaxLength(10000);
504
505 b.Property<string>("PasswordHash");
506
507 b.Property<string>("SystemIdentifier");
508
509 b.HasKey("Id");
510
511 b.HasIndex("CanonicalName")
512 .IsUnique();
513
514 b.HasIndex("CreatedById");
515
516 b.HasIndex("SystemIdentifier")
517 .IsUnique()
518 .HasFilter("[SystemIdentifier] IS NOT NULL");
519
520 b.ToTable("Users");
521 });
522
523 modelBuilder.Entity("Tgstation.Server.Host.Models.WatchdogReattachInformation", b =>
524 {
525 b.Property<long>("Id")
526 .ValueGeneratedOnAdd()
527 .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
528
529 b.Property<long?>("AlphaId");
530
531 b.Property<bool>("AlphaIsActive");
532
533 b.Property<long?>("BravoId");
534
535 b.Property<long>("InstanceId");
536
537 b.HasKey("Id");
538
539 b.HasIndex("AlphaId");
540
541 b.HasIndex("BravoId");
542
543 b.HasIndex("InstanceId")
544 .IsUnique();
545
546 b.ToTable("WatchdogReattachInformations");
547 });
548
549 modelBuilder.Entity("Tgstation.Server.Host.Models.ChatBot", b =>
550 {
551 b.HasOne("Tgstation.Server.Host.Models.Instance", "Instance")
552 .WithMany("ChatSettings")
553 .HasForeignKey("InstanceId")
554 .OnDelete(DeleteBehavior.Cascade);
555 });
556
557 modelBuilder.Entity("Tgstation.Server.Host.Models.ChatChannel", b =>
558 {
559 b.HasOne("Tgstation.Server.Host.Models.ChatBot", "ChatSettings")
560 .WithMany("Channels")
561 .HasForeignKey("ChatSettingsId")
562 .OnDelete(DeleteBehavior.Cascade);
563 });
564
565 modelBuilder.Entity("Tgstation.Server.Host.Models.CompileJob", b =>
566 {
567 b.HasOne("Tgstation.Server.Host.Models.Job", "Job")
568 .WithOne()
569 .HasForeignKey("Tgstation.Server.Host.Models.CompileJob", "JobId")
570 .OnDelete(DeleteBehavior.Restrict);
571
572 b.HasOne("Tgstation.Server.Host.Models.RevisionInformation", "RevisionInformation")
573 .WithMany("CompileJobs")
574 .HasForeignKey("RevisionInformationId")
575 .OnDelete(DeleteBehavior.Cascade);
576 });
577
578 modelBuilder.Entity("Tgstation.Server.Host.Models.DreamDaemonSettings", b =>
579 {
580 b.HasOne("Tgstation.Server.Host.Models.Instance", "Instance")
581 .WithOne("DreamDaemonSettings")
582 .HasForeignKey("Tgstation.Server.Host.Models.DreamDaemonSettings", "InstanceId")
583 .OnDelete(DeleteBehavior.Cascade);
584 });
585
586 modelBuilder.Entity("Tgstation.Server.Host.Models.DreamMakerSettings", b =>
587 {
588 b.HasOne("Tgstation.Server.Host.Models.Instance", "Instance")
589 .WithOne("DreamMakerSettings")
590 .HasForeignKey("Tgstation.Server.Host.Models.DreamMakerSettings", "InstanceId")
591 .OnDelete(DeleteBehavior.Cascade);
592 });
593
594 modelBuilder.Entity("Tgstation.Server.Host.Models.InstanceUser", b =>
595 {
596 b.HasOne("Tgstation.Server.Host.Models.Instance", "Instance")
597 .WithMany("InstanceUsers")
598 .HasForeignKey("InstanceId")
599 .OnDelete(DeleteBehavior.Cascade);
600
601 b.HasOne("Tgstation.Server.Host.Models.User")
602 .WithMany("InstanceUsers")
603 .HasForeignKey("UserId")
604 .OnDelete(DeleteBehavior.Cascade);
605 });
606
607 modelBuilder.Entity("Tgstation.Server.Host.Models.Job", b =>
608 {
609 b.HasOne("Tgstation.Server.Host.Models.User", "CancelledBy")
610 .WithMany()
611 .HasForeignKey("CancelledById");
612
613 b.HasOne("Tgstation.Server.Host.Models.Instance", "Instance")
614 .WithMany("Jobs")
615 .HasForeignKey("InstanceId")
616 .OnDelete(DeleteBehavior.Cascade);
617
618 b.HasOne("Tgstation.Server.Host.Models.User", "StartedBy")
619 .WithMany()
620 .HasForeignKey("StartedById")
621 .OnDelete(DeleteBehavior.Cascade);
622 });
623
624 modelBuilder.Entity("Tgstation.Server.Host.Models.ReattachInformation", b =>
625 {
626 b.HasOne("Tgstation.Server.Host.Models.CompileJob", "CompileJob")
627 .WithMany()
628 .HasForeignKey("CompileJobId")
629 .OnDelete(DeleteBehavior.Cascade);
630 });
631
632 modelBuilder.Entity("Tgstation.Server.Host.Models.RepositorySettings", b =>
633 {
634 b.HasOne("Tgstation.Server.Host.Models.Instance", "Instance")
635 .WithOne("RepositorySettings")
636 .HasForeignKey("Tgstation.Server.Host.Models.RepositorySettings", "InstanceId")
637 .OnDelete(DeleteBehavior.Cascade);
638 });
639
640 modelBuilder.Entity("Tgstation.Server.Host.Models.RevInfoTestMerge", b =>
641 {
642 b.HasOne("Tgstation.Server.Host.Models.RevisionInformation", "RevisionInformation")
643 .WithMany("ActiveTestMerges")
644 .HasForeignKey("RevisionInformationId")
645 .OnDelete(DeleteBehavior.Cascade);
646
647 b.HasOne("Tgstation.Server.Host.Models.TestMerge", "TestMerge")
648 .WithMany("RevisonInformations")
649 .HasForeignKey("TestMergeId")
650 .OnDelete(DeleteBehavior.Cascade);
651 });
652
653 modelBuilder.Entity("Tgstation.Server.Host.Models.RevisionInformation", b =>
654 {
655 b.HasOne("Tgstation.Server.Host.Models.Instance", "Instance")
656 .WithMany("RevisionInformations")
657 .HasForeignKey("InstanceId")
658 .OnDelete(DeleteBehavior.Cascade);
659 });
660
661 modelBuilder.Entity("Tgstation.Server.Host.Models.TestMerge", b =>
662 {
663 b.HasOne("Tgstation.Server.Host.Models.User", "MergedBy")
664 .WithMany("TestMerges")
665 .HasForeignKey("MergedById")
666 .OnDelete(DeleteBehavior.Restrict);
667
668 b.HasOne("Tgstation.Server.Host.Models.RevisionInformation", "PrimaryRevisionInformation")
669 .WithOne("PrimaryTestMerge")
670 .HasForeignKey("Tgstation.Server.Host.Models.TestMerge", "PrimaryRevisionInformationId")
671 .OnDelete(DeleteBehavior.Restrict);
672 });
673
674 modelBuilder.Entity("Tgstation.Server.Host.Models.User", b =>
675 {
676 b.HasOne("Tgstation.Server.Host.Models.User", "CreatedBy")
677 .WithMany("CreatedUsers")
678 .HasForeignKey("CreatedById");
679 });
680
681 modelBuilder.Entity("Tgstation.Server.Host.Models.WatchdogReattachInformation", b =>
682 {
683 b.HasOne("Tgstation.Server.Host.Models.ReattachInformation", "Alpha")
684 .WithMany()
685 .HasForeignKey("AlphaId");
686
687 b.HasOne("Tgstation.Server.Host.Models.ReattachInformation", "Bravo")
688 .WithMany()
689 .HasForeignKey("BravoId");
690
691 b.HasOne("Tgstation.Server.Host.Models.Instance")
692 .WithOne("WatchdogReattachInformation")
693 .HasForeignKey("Tgstation.Server.Host.Models.WatchdogReattachInformation", "InstanceId")
694 .OnDelete(DeleteBehavior.Cascade);
695 });
696#pragma warning restore 612, 618
697 }