//
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using RR3CommunityServer.Data;
#nullable disable
namespace RR3CommunityServer.Migrations
{
[DbContext(typeof(RR3DbContext))]
[Migration("20260224010029_AddAnalyticsTracking")]
partial class AddAnalyticsTracking
{
///
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder.HasAnnotation("ProductVersion", "8.0.11");
modelBuilder.Entity("RR3CommunityServer.Data.AnalyticsEvent", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("EventData")
.IsRequired()
.HasColumnType("TEXT");
b.Property("EventType")
.IsRequired()
.HasColumnType("TEXT");
b.Property("SessionId")
.HasColumnType("TEXT");
b.Property("Timestamp")
.HasColumnType("TEXT");
b.Property("UserId")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("UserId");
b.ToTable("AnalyticsEvents");
});
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.Club", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("CreatedAt")
.HasColumnType("TEXT");
b.Property("Description")
.IsRequired()
.HasColumnType("TEXT");
b.Property("IsPublic")
.HasColumnType("INTEGER");
b.Property("IsRecruiting")
.HasColumnType("INTEGER");
b.Property("MaxMembers")
.HasColumnType("INTEGER");
b.Property("Name")
.IsRequired()
.HasColumnType("TEXT");
b.Property("OwnerId")
.HasColumnType("INTEGER");
b.Property("Tag")
.IsRequired()
.HasColumnType("TEXT");
b.Property("TotalPoints")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("OwnerId");
b.ToTable("Clubs");
});
modelBuilder.Entity("RR3CommunityServer.Data.ClubMember", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("ClubId")
.HasColumnType("INTEGER");
b.Property("ContributedPoints")
.HasColumnType("INTEGER");
b.Property("JoinedAt")
.HasColumnType("TEXT");
b.Property("Role")
.IsRequired()
.HasColumnType("TEXT");
b.Property("UserId")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("ClubId");
b.HasIndex("UserId");
b.ToTable("ClubMembers");
});
modelBuilder.Entity("RR3CommunityServer.Data.CompetitiveRating", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("Division")
.IsRequired()
.HasColumnType("TEXT");
b.Property("DivisionRank")
.HasColumnType("INTEGER");
b.Property("Draws")
.HasColumnType("INTEGER");
b.Property("LastMatchAt")
.HasColumnType("TEXT");
b.Property("Losses")
.HasColumnType("INTEGER");
b.Property("Rating")
.HasColumnType("INTEGER");
b.Property("UserId")
.HasColumnType("INTEGER");
b.Property("Wins")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("UserId");
b.ToTable("CompetitiveRatings");
});
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.Event", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("Active")
.HasColumnType("INTEGER");
b.Property("CashReward")
.HasColumnType("INTEGER");
b.Property("EventCode")
.IsRequired()
.HasColumnType("TEXT");
b.Property("EventOrder")
.HasColumnType("INTEGER");
b.Property("EventType")
.IsRequired()
.HasColumnType("TEXT");
b.Property("GoldReward")
.HasColumnType("INTEGER");
b.Property("Laps")
.HasColumnType("INTEGER");
b.Property("Name")
.IsRequired()
.HasColumnType("TEXT");
b.Property("RequiredCarClass")
.HasColumnType("TEXT");
b.Property("RequiredPR")
.HasColumnType("INTEGER");
b.Property("SeriesName")
.IsRequired()
.HasColumnType("TEXT");
b.Property("SeriesOrder")
.HasColumnType("INTEGER");
b.Property("TargetTime")
.HasColumnType("REAL");
b.Property("Track")
.IsRequired()
.HasColumnType("TEXT");
b.Property("XPReward")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.ToTable("Events");
});
modelBuilder.Entity("RR3CommunityServer.Data.EventAttempt", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("Completed")
.HasColumnType("INTEGER");
b.Property("CompletedAt")
.HasColumnType("TEXT");
b.Property("EventId")
.HasColumnType("INTEGER");
b.Property("StartedAt")
.HasColumnType("TEXT");
b.Property("TimeSeconds")
.HasColumnType("REAL");
b.Property("UserId")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("EventId");
b.HasIndex("UserId");
b.ToTable("EventAttempts");
});
modelBuilder.Entity("RR3CommunityServer.Data.EventCompletion", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("BestTime")
.HasColumnType("REAL");
b.Property("CompletionCount")
.HasColumnType("INTEGER");
b.Property("EventId")
.HasColumnType("INTEGER");
b.Property("FirstCompletedAt")
.HasColumnType("TEXT");
b.Property("LastCompletedAt")
.HasColumnType("TEXT");
b.Property("UserId")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("EventId");
b.HasIndex("UserId");
b.ToTable("EventCompletions");
});
modelBuilder.Entity("RR3CommunityServer.Data.Friend", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("CreatedAt")
.HasColumnType("TEXT");
b.Property("User1Id")
.HasColumnType("INTEGER");
b.Property("User2Id")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("User1Id");
b.HasIndex("User2Id");
b.ToTable("Friends");
});
modelBuilder.Entity("RR3CommunityServer.Data.FriendInvitation", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("CreatedAt")
.HasColumnType("TEXT");
b.Property("ExpiresAt")
.HasColumnType("TEXT");
b.Property("ReceiverId")
.HasColumnType("INTEGER");
b.Property("RespondedAt")
.HasColumnType("TEXT");
b.Property("SenderId")
.HasColumnType("INTEGER");
b.Property("Status")
.IsRequired()
.HasColumnType("TEXT");
b.HasKey("Id");
b.HasIndex("ReceiverId");
b.HasIndex("SenderId");
b.ToTable("FriendInvitations");
});
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.GhostData", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("CarId")
.IsRequired()
.HasColumnType("TEXT");
b.Property("Downloads")
.HasColumnType("INTEGER");
b.Property("RaceTime")
.HasColumnType("REAL");
b.Property("TelemetryData")
.IsRequired()
.HasColumnType("TEXT");
b.Property("Track")
.IsRequired()
.HasColumnType("TEXT");
b.Property("UploadedAt")
.HasColumnType("TEXT");
b.Property("UserId")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("UserId");
b.ToTable("GhostData");
});
modelBuilder.Entity("RR3CommunityServer.Data.Gift", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("Amount")
.HasColumnType("INTEGER");
b.Property("Claimed")
.HasColumnType("INTEGER");
b.Property("ClaimedAt")
.HasColumnType("TEXT");
b.Property("ExpiresAt")
.HasColumnType("TEXT");
b.Property("GiftType")
.IsRequired()
.HasColumnType("TEXT");
b.Property("Message")
.HasColumnType("TEXT");
b.Property("ReceiverId")
.HasColumnType("INTEGER");
b.Property("SenderId")
.HasColumnType("INTEGER");
b.Property("SentAt")
.HasColumnType("TEXT");
b.HasKey("Id");
b.HasIndex("ReceiverId");
b.HasIndex("SenderId");
b.ToTable("Gifts");
});
modelBuilder.Entity("RR3CommunityServer.Data.LeaderboardEntry", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("CarName")
.HasColumnType("TEXT");
b.Property("PlayerName")
.IsRequired()
.HasColumnType("TEXT");
b.Property("RecordCategory")
.IsRequired()
.HasColumnType("TEXT");
b.Property("RecordType")
.IsRequired()
.HasColumnType("TEXT");
b.Property("SubmittedAt")
.HasColumnType("TEXT");
b.Property("SynergyId")
.IsRequired()
.HasColumnType("TEXT");
b.Property("TimeSeconds")
.HasColumnType("REAL");
b.Property("TrackName")
.HasColumnType("TEXT");
b.HasKey("Id");
b.ToTable("LeaderboardEntries");
});
modelBuilder.Entity("RR3CommunityServer.Data.MatchmakingQueue", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("CarClass")
.IsRequired()
.HasColumnType("TEXT");
b.Property("GameMode")
.IsRequired()
.HasColumnType("TEXT");
b.Property("MatchedAt")
.HasColumnType("TEXT");
b.Property("QueuedAt")
.HasColumnType("TEXT");
b.Property("SessionId")
.HasColumnType("INTEGER");
b.Property("Status")
.IsRequired()
.HasColumnType("TEXT");
b.Property("Track")
.IsRequired()
.HasColumnType("TEXT");
b.Property("UserId")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("SessionId");
b.HasIndex("UserId");
b.ToTable("MatchmakingQueues");
});
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.Notification", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("CreatedAt")
.HasColumnType("TEXT");
b.Property("ExpiresAt")
.HasColumnType("TEXT");
b.Property("IsRead")
.HasColumnType("INTEGER");
b.Property("Message")
.IsRequired()
.HasColumnType("TEXT");
b.Property("Title")
.IsRequired()
.HasColumnType("TEXT");
b.Property("Type")
.IsRequired()
.HasColumnType("TEXT");
b.Property("UserId")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("UserId");
b.ToTable("Notifications");
});
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.PersonalRecord", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("AchievedAt")
.HasColumnType("TEXT");
b.Property("BestTimeSeconds")
.HasColumnType("REAL");
b.Property("CarName")
.HasColumnType("TEXT");
b.Property("ImprovementSeconds")
.HasColumnType("REAL");
b.Property("PreviousBestTime")
.HasColumnType("TEXT");
b.Property("RecordCategory")
.IsRequired()
.HasColumnType("TEXT");
b.Property("RecordType")
.IsRequired()
.HasColumnType("TEXT");
b.Property("SynergyId")
.IsRequired()
.HasColumnType("TEXT");
b.Property("TotalAttempts")
.HasColumnType("INTEGER");
b.Property("TrackName")
.HasColumnType("TEXT");
b.HasKey("Id");
b.ToTable("PersonalRecords");
});
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.RaceParticipant", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("CarId")
.IsRequired()
.HasColumnType("TEXT");
b.Property("FinishPosition")
.HasColumnType("INTEGER");
b.Property("IsReady")
.HasColumnType("INTEGER");
b.Property("JoinedAt")
.HasColumnType("TEXT");
b.Property("RaceTime")
.HasColumnType("REAL");
b.Property("RewardCash")
.HasColumnType("INTEGER");
b.Property("RewardGold")
.HasColumnType("INTEGER");
b.Property("RewardXP")
.HasColumnType("INTEGER");
b.Property("SessionId")
.HasColumnType("INTEGER");
b.Property("UserId")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("SessionId");
b.HasIndex("UserId");
b.ToTable("RaceParticipants");
});
modelBuilder.Entity("RR3CommunityServer.Data.RaceSession", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property("CarClass")
.IsRequired()
.HasColumnType("TEXT");
b.Property("CreatedAt")
.HasColumnType("TEXT");
b.Property("FinishedAt")
.HasColumnType("TEXT");
b.Property("HostId")
.HasColumnType("INTEGER");
b.Property