//
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using RR3CommunityServer.Data;
#nullable disable
namespace RR3CommunityServer.Migrations
{
[DbContext(typeof(RR3DbContext))]
partial class RR3DbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder.HasAnnotation("ProductVersion", "8.0.11");
modelBuilder.Entity("RR3CommunityServer.Data.Car", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("Available")
.HasColumnType("INTEGER");
b.Property("BasePerformanceRating")
.HasColumnType("INTEGER");
b.Property("CarId")
.IsRequired()
.HasColumnType("TEXT");
b.Property("CashPrice")
.HasColumnType("INTEGER");
b.Property("ClassType")
.IsRequired()
.HasColumnType("TEXT");
b.Property("CreatedAt")
.HasColumnType("TEXT");
b.Property("CustomAuthor")
.HasColumnType("TEXT");
b.Property("CustomVersion")
.HasColumnType("TEXT");
b.Property("Description")
.HasColumnType("TEXT");
b.Property("GoldPrice")
.HasColumnType("INTEGER");
b.Property("IsCustom")
.HasColumnType("INTEGER");
b.Property("Manufacturer")
.IsRequired()
.HasColumnType("TEXT");
b.Property("Name")
.IsRequired()
.HasColumnType("TEXT");
b.Property("Year")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.ToTable("Cars");
b.HasData(
new
{
Id = 1,
Available = true,
BasePerformanceRating = 45,
CarId = "nissan_silvia_s15",
CashPrice = 25000,
ClassType = "C",
GoldPrice = 0,
IsCustom = false,
Manufacturer = "Nissan",
Name = "Nissan Silvia Spec-R",
Year = 0
},
new
{
Id = 2,
Available = true,
BasePerformanceRating = 58,
CarId = "ford_focus_rs",
CashPrice = 85000,
ClassType = "B",
GoldPrice = 150,
IsCustom = false,
Manufacturer = "Ford",
Name = "Ford Focus RS",
Year = 0
},
new
{
Id = 3,
Available = true,
BasePerformanceRating = 72,
CarId = "porsche_911_gt3",
CashPrice = 0,
ClassType = "A",
GoldPrice = 350,
IsCustom = false,
Manufacturer = "Porsche",
Name = "Porsche 911 GT3 RS",
Year = 0
},
new
{
Id = 4,
Available = true,
BasePerformanceRating = 88,
CarId = "ferrari_488_gtb",
CashPrice = 0,
ClassType = "S",
GoldPrice = 750,
IsCustom = false,
Manufacturer = "Ferrari",
Name = "Ferrari 488 GTB",
Year = 0
},
new
{
Id = 5,
Available = true,
BasePerformanceRating = 105,
CarId = "mclaren_p1_gtr",
CashPrice = 0,
ClassType = "R",
GoldPrice = 1500,
IsCustom = false,
Manufacturer = "McLaren",
Name = "McLaren P1 GTR",
Year = 0
});
});
modelBuilder.Entity("RR3CommunityServer.Data.CarUpgrade", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("CarId")
.IsRequired()
.HasColumnType("TEXT");
b.Property("CashCost")
.HasColumnType("INTEGER");
b.Property("Level")
.HasColumnType("INTEGER");
b.Property("PerformanceIncrease")
.HasColumnType("INTEGER");
b.Property("UpgradeType")
.IsRequired()
.HasColumnType("TEXT");
b.HasKey("Id");
b.ToTable("CarUpgrades");
b.HasData(
new
{
Id = 1,
CarId = "nissan_silvia_s15",
CashCost = 5000,
Level = 1,
PerformanceIncrease = 3,
UpgradeType = "engine"
},
new
{
Id = 2,
CarId = "nissan_silvia_s15",
CashCost = 3000,
Level = 1,
PerformanceIncrease = 2,
UpgradeType = "tires"
},
new
{
Id = 3,
CarId = "nissan_silvia_s15",
CashCost = 4000,
Level = 1,
PerformanceIncrease = 2,
UpgradeType = "suspension"
},
new
{
Id = 4,
CarId = "nissan_silvia_s15",
CashCost = 3500,
Level = 1,
PerformanceIncrease = 2,
UpgradeType = "brakes"
},
new
{
Id = 5,
CarId = "nissan_silvia_s15",
CashCost = 4500,
Level = 1,
PerformanceIncrease = 3,
UpgradeType = "drivetrain"
});
});
modelBuilder.Entity("RR3CommunityServer.Data.CareerProgress", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("BestTime")
.HasColumnType("REAL");
b.Property("Completed")
.HasColumnType("INTEGER");
b.Property("CompletedAt")
.HasColumnType("TEXT");
b.Property("EventName")
.IsRequired()
.HasColumnType("TEXT");
b.Property("SeriesName")
.IsRequired()
.HasColumnType("TEXT");
b.Property("StarsEarned")
.HasColumnType("INTEGER");
b.Property("UserId")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("UserId");
b.ToTable("CareerProgress");
});
modelBuilder.Entity("RR3CommunityServer.Data.CatalogItem", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("Available")
.HasColumnType("INTEGER");
b.Property("Name")
.IsRequired()
.HasColumnType("TEXT");
b.Property("Price")
.HasColumnType("TEXT");
b.Property("Sku")
.IsRequired()
.HasColumnType("TEXT");
b.Property("Type")
.IsRequired()
.HasColumnType("TEXT");
b.HasKey("Id");
b.ToTable("CatalogItems");
b.HasData(
new
{
Id = 1,
Available = true,
Name = "1000 Gold",
Price = 0.99m,
Sku = "com.ea.rr3.gold_1000",
Type = "currency"
},
new
{
Id = 2,
Available = true,
Name = "Starter Car",
Price = 0m,
Sku = "com.ea.rr3.car_tier1",
Type = "car"
},
new
{
Id = 3,
Available = true,
Name = "Engine Upgrade",
Price = 4.99m,
Sku = "com.ea.rr3.upgrade_engine",
Type = "upgrade"
},
new
{
Id = 4,
Available = true,
Name = "100 Gold",
Price = 0m,
Sku = "com.ea.rr3.gold_100",
Type = "currency"
},
new
{
Id = 5,
Available = true,
Name = "500 Gold",
Price = 0m,
Sku = "com.ea.rr3.gold_500",
Type = "currency"
},
new
{
Id = 6,
Available = true,
Name = "1000 Gold",
Price = 0m,
Sku = "com.ea.rr3.gold_1000",
Type = "currency"
},
new
{
Id = 7,
Available = true,
Name = "5000 Gold",
Price = 0m,
Sku = "com.ea.rr3.gold_5000",
Type = "currency"
});
});
modelBuilder.Entity("RR3CommunityServer.Data.DailyReward", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("CashAmount")
.HasColumnType("INTEGER");
b.Property("Claimed")
.HasColumnType("INTEGER");
b.Property("ClaimedAt")
.HasColumnType("TEXT");
b.Property("GoldAmount")
.HasColumnType("INTEGER");
b.Property("RewardDate")
.HasColumnType("TEXT");
b.Property("Streak")
.HasColumnType("INTEGER");
b.Property("UserId")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.ToTable("DailyRewards");
});
modelBuilder.Entity("RR3CommunityServer.Data.Device", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("CreatedAt")
.HasColumnType("TEXT");
b.Property("DeviceId")
.IsRequired()
.HasColumnType("TEXT");
b.Property("HardwareId")
.IsRequired()
.HasColumnType("TEXT");
b.Property("LastSeenAt")
.HasColumnType("TEXT");
b.HasKey("Id");
b.ToTable("Devices");
});
modelBuilder.Entity("RR3CommunityServer.Data.GameAsset", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("AccessCount")
.HasColumnType("INTEGER");
b.Property("AssetId")
.IsRequired()
.HasColumnType("TEXT");
b.Property("AssetType")
.IsRequired()
.HasColumnType("TEXT");
b.Property("CarId")
.HasColumnType("TEXT");
b.Property("Category")
.IsRequired()
.HasColumnType("TEXT");
b.Property("CompressedSize")
.HasColumnType("INTEGER");
b.Property("ContentType")
.IsRequired()
.HasColumnType("TEXT");
b.Property("CustomAuthor")
.HasColumnType("TEXT");
b.Property("Description")
.HasColumnType("TEXT");
b.Property("DownloadedAt")
.HasColumnType("TEXT");
b.Property("EaCdnPath")
.HasColumnType("TEXT");
b.Property("FileName")
.IsRequired()
.HasColumnType("TEXT");
b.Property("FileSha256")
.HasColumnType("TEXT");
b.Property("FileSize")
.HasColumnType("INTEGER");
b.Property("IsAvailable")
.HasColumnType("INTEGER");
b.Property("IsCustomContent")
.HasColumnType("INTEGER");
b.Property("IsRequired")
.HasColumnType("INTEGER");
b.Property("LastAccessedAt")
.HasColumnType("TEXT");
b.Property("LocalPath")
.HasColumnType("TEXT");
b.Property("Md5Hash")
.HasColumnType("TEXT");
b.Property("OriginalUrl")
.HasColumnType("TEXT");
b.Property("TrackId")
.HasColumnType("TEXT");
b.Property("UploadedAt")
.HasColumnType("TEXT");
b.Property("Version")
.HasColumnType("TEXT");
b.HasKey("Id");
b.ToTable("GameAssets");
});
modelBuilder.Entity("RR3CommunityServer.Data.ModPack", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("Author")
.IsRequired()
.HasColumnType("TEXT");
b.Property("CarIds")
.HasColumnType("TEXT");
b.Property("CreatedAt")
.HasColumnType("TEXT");
b.Property("Description")
.HasColumnType("TEXT");
b.Property("DownloadCount")
.HasColumnType("INTEGER");
b.Property("Name")
.IsRequired()
.HasColumnType("TEXT");
b.Property("PackId")
.IsRequired()
.HasColumnType("TEXT");
b.Property("Rating")
.HasColumnType("REAL");
b.Property("TrackIds")
.HasColumnType("TEXT");
b.Property("UpdatedAt")
.HasColumnType("TEXT");
b.Property("Version")
.IsRequired()
.HasColumnType("TEXT");
b.HasKey("Id");
b.ToTable("ModPacks");
});
modelBuilder.Entity("RR3CommunityServer.Data.OwnedCar", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("CarId")
.IsRequired()
.HasColumnType("TEXT");
b.Property("CarName")
.IsRequired()
.HasColumnType("TEXT");
b.Property("ClassType")
.IsRequired()
.HasColumnType("TEXT");
b.Property("Manufacturer")
.IsRequired()
.HasColumnType("TEXT");
b.Property("PerformanceRating")
.HasColumnType("INTEGER");
b.Property("PurchasedAt")
.HasColumnType("TEXT");
b.Property("PurchasedUpgrades")
.IsRequired()
.HasColumnType("TEXT");
b.Property("UpgradeLevel")
.HasColumnType("INTEGER");
b.Property("UserId")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("UserId");
b.ToTable("OwnedCars");
});
modelBuilder.Entity("RR3CommunityServer.Data.PlayerSave", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("CreatedAt")
.HasColumnType("TEXT");
b.Property("LastModified")
.HasColumnType("TEXT");
b.Property("SaveDataJson")
.IsRequired()
.HasColumnType("TEXT");
b.Property("SynergyId")
.IsRequired()
.HasColumnType("TEXT");
b.Property("Version")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.ToTable("PlayerSaves");
});
modelBuilder.Entity("RR3CommunityServer.Data.Purchase", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("ItemId")
.IsRequired()
.HasColumnType("TEXT");
b.Property("OrderId")
.IsRequired()
.HasColumnType("TEXT");
b.Property("Price")
.HasColumnType("TEXT");
b.Property("PurchaseTime")
.HasColumnType("TEXT");
b.Property("Sku")
.IsRequired()
.HasColumnType("TEXT");
b.Property("Status")
.IsRequired()
.HasColumnType("TEXT");
b.Property("SynergyId")
.IsRequired()
.HasColumnType("TEXT");
b.Property("Token")
.IsRequired()
.HasColumnType("TEXT");
b.Property("UserId")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.ToTable("Purchases");
});
modelBuilder.Entity("RR3CommunityServer.Data.Session", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("CreatedAt")
.HasColumnType("TEXT");
b.Property("DeviceId")
.IsRequired()
.HasColumnType("TEXT");
b.Property("ExpiresAt")
.HasColumnType("TEXT");
b.Property("SessionId")
.IsRequired()
.HasColumnType("TEXT");
b.Property("SynergyId")
.HasColumnType("TEXT");
b.Property("UserId")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.ToTable("Sessions");
});
modelBuilder.Entity("RR3CommunityServer.Data.TimeTrial", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("Active")
.HasColumnType("INTEGER");
b.Property("CarName")
.IsRequired()
.HasColumnType("TEXT");
b.Property("CashReward")
.HasColumnType("INTEGER");
b.Property("EndDate")
.HasColumnType("TEXT");
b.Property("GoldReward")
.HasColumnType("INTEGER");
b.Property("Name")
.IsRequired()
.HasColumnType("TEXT");
b.Property("StartDate")
.HasColumnType("TEXT");
b.Property("TargetTime")
.HasColumnType("REAL");
b.Property("TrackName")
.IsRequired()
.HasColumnType("TEXT");
b.HasKey("Id");
b.ToTable("TimeTrials");
b.HasData(
new
{
Id = 1,
Active = true,
CarName = "Any Car",
CashReward = 10000,
EndDate = new DateTime(2026, 3, 1, 7, 47, 46, 836, DateTimeKind.Utc).AddTicks(7182),
GoldReward = 50,
Name = "Daily Sprint Challenge",
StartDate = new DateTime(2026, 2, 22, 7, 47, 46, 836, DateTimeKind.Utc).AddTicks(7180),
TargetTime = 90.5,
TrackName = "Silverstone National"
},
new
{
Id = 2,
Active = true,
CarName = "Any Car",
CashReward = 25000,
EndDate = new DateTime(2026, 3, 1, 7, 47, 46, 836, DateTimeKind.Utc).AddTicks(7192),
GoldReward = 100,
Name = "Speed Demon Trial",
StartDate = new DateTime(2026, 2, 22, 7, 47, 46, 836, DateTimeKind.Utc).AddTicks(7191),
TargetTime = 120.0,
TrackName = "Dubai Autodrome"
});
});
modelBuilder.Entity("RR3CommunityServer.Data.TimeTrialResult", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("BeatTarget")
.HasColumnType("INTEGER");
b.Property("CashEarned")
.HasColumnType("INTEGER");
b.Property("GoldEarned")
.HasColumnType("INTEGER");
b.Property("SubmittedAt")
.HasColumnType("TEXT");
b.Property("TimeSeconds")
.HasColumnType("REAL");
b.Property("TimeTrialId")
.HasColumnType("INTEGER");
b.Property("UserId")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.ToTable("TimeTrialResults");
});
modelBuilder.Entity("RR3CommunityServer.Data.User", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("Cash")
.HasColumnType("INTEGER");
b.Property("CreatedAt")
.HasColumnType("TEXT");
b.Property("DeviceId")
.HasColumnType("TEXT");
b.Property("Experience")
.HasColumnType("INTEGER");
b.Property("Gold")
.HasColumnType("INTEGER");
b.Property("Level")
.HasColumnType("INTEGER");
b.Property("Nickname")
.HasColumnType("TEXT");
b.Property("Reputation")
.HasColumnType("INTEGER");
b.Property("SynergyId")
.IsRequired()
.HasColumnType("TEXT");
b.HasKey("Id");
b.ToTable("Users");
});
modelBuilder.Entity("RR3CommunityServer.Models.Account", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("CreatedAt")
.HasColumnType("TEXT");
b.Property("Email")
.IsRequired()
.HasColumnType("TEXT");
b.Property("EmailVerificationToken")
.HasColumnType("TEXT");
b.Property("EmailVerified")
.HasColumnType("INTEGER");
b.Property("IsActive")
.HasColumnType("INTEGER");
b.Property("LastLoginAt")
.HasColumnType("TEXT");
b.Property("PasswordHash")
.IsRequired()
.HasColumnType("TEXT");
b.Property("PasswordResetExpiry")
.HasColumnType("TEXT");
b.Property("PasswordResetToken")
.HasColumnType("TEXT");
b.Property("UserId")
.HasColumnType("INTEGER");
b.Property("Username")
.IsRequired()
.HasColumnType("TEXT");
b.HasKey("Id");
b.HasIndex("UserId");
b.ToTable("Accounts");
});
modelBuilder.Entity("RR3CommunityServer.Models.DeviceAccount", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("AccountId")
.HasColumnType("INTEGER");
b.Property("DeviceId")
.IsRequired()
.HasColumnType("TEXT");
b.Property("DeviceName")
.HasColumnType("TEXT");
b.Property("LastUsedAt")
.HasColumnType("TEXT");
b.Property("LinkedAt")
.HasColumnType("TEXT");
b.HasKey("Id");
b.HasIndex("AccountId");
b.ToTable("DeviceAccounts");
});
modelBuilder.Entity("RR3CommunityServer.Models.UserSettings", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("DeviceId")
.IsRequired()
.HasColumnType("TEXT");
b.Property("LastUpdated")
.HasColumnType("TEXT");
b.Property("Mode")
.IsRequired()
.HasColumnType("TEXT");
b.Property("ServerUrl")
.IsRequired()
.HasColumnType("TEXT");
b.HasKey("Id");
b.ToTable("UserSettings");
});
modelBuilder.Entity("RR3CommunityServer.Data.CareerProgress", b =>
{
b.HasOne("RR3CommunityServer.Data.User", null)
.WithMany("CareerProgress")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("RR3CommunityServer.Data.OwnedCar", b =>
{
b.HasOne("RR3CommunityServer.Data.User", null)
.WithMany("OwnedCars")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("RR3CommunityServer.Models.Account", b =>
{
b.HasOne("RR3CommunityServer.Data.User", "User")
.WithMany()
.HasForeignKey("UserId");
b.Navigation("User");
});
modelBuilder.Entity("RR3CommunityServer.Models.DeviceAccount", b =>
{
b.HasOne("RR3CommunityServer.Models.Account", "Account")
.WithMany("LinkedDevices")
.HasForeignKey("AccountId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Account");
});
modelBuilder.Entity("RR3CommunityServer.Data.User", b =>
{
b.Navigation("CareerProgress");
b.Navigation("OwnedCars");
});
modelBuilder.Entity("RR3CommunityServer.Models.Account", b =>
{
b.Navigation("LinkedDevices");
});
#pragma warning restore 612, 618
}
}
}