random bullshit go

reccenter still doesnt work
This commit is contained in:
Lapis
2026-04-03 23:34:03 -04:00
parent ae8c1b6057
commit 284db74d0e
7 changed files with 747 additions and 53 deletions
+1 -1
View File
@@ -105,7 +105,7 @@ public class AppDbContext : DbContext
entity.HasKey(e => e.Id);
entity.Property(e => e.Id).ValueGeneratedOnAdd();
entity.Property(e => e.OwnerAccountId).IsRequired();
entity.HasIndex(e => e.OwnerAccountId).IsUnique();
entity.HasIndex(e => new { e.OwnerAccountId, e.roomId });
entity.ToTable("room_instances");
});
@@ -0,0 +1,693 @@
// <auto-generated />
using System;
using CannedNet.Data;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace CannedNet.Migrations
{
[DbContext(typeof(AppDbContext))]
[Migration("20260404002057_RemoveUniqueOwnerAccountId")]
partial class RemoveUniqueOwnerAccountId
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "8.0.0")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("CannedNet.Account", b =>
{
b.Property<int?>("AccountId")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "accountId");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasAnnotation("Relational:JsonPropertyName", "createdAt");
b.Property<string>("DisplayName")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "displayName");
b.Property<int?>("IdentityFlags")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "identityFlags");
b.Property<bool>("IsJunior")
.HasColumnType("boolean")
.HasAnnotation("Relational:JsonPropertyName", "isJunior");
b.Property<int?>("PersonalPronouns")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "personalPronouns");
b.Property<int?>("Platforms")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "platforms");
b.Property<string>("ProfileImage")
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "profileImage");
b.Property<string>("Username")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "username");
b.HasKey("AccountId");
b.ToTable("accounts", (string)null);
});
modelBuilder.Entity("CannedNet.AvatarItem", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("AvatarItemDesc")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "avatarItemDesc");
b.Property<int>("AvatarItemType")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "avatarItemType");
b.Property<string>("FriendlyName")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "friendlyName");
b.Property<int>("OwnerAccountId")
.HasColumnType("integer");
b.Property<int>("PlatformMask")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "platformMask");
b.Property<int>("Rarity")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "rarity");
b.Property<string>("Tooltip")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "tooltip");
b.HasKey("Id");
b.HasIndex("OwnerAccountId");
b.ToTable("avatar_items", (string)null);
});
modelBuilder.Entity("CannedNet.CachedLogin", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("AccountId")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "accountId");
b.Property<DateTime>("LastLoginTime")
.HasColumnType("timestamp with time zone")
.HasAnnotation("Relational:JsonPropertyName", "lastLoginTime");
b.Property<int>("Platform")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "platform");
b.Property<string>("PlatformID")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "platformId");
b.Property<bool>("RequirePassword")
.HasColumnType("boolean")
.HasAnnotation("Relational:JsonPropertyName", "requirePassword");
b.HasKey("Id");
b.HasIndex("Platform", "PlatformID")
.IsUnique();
b.ToTable("cached_logins", (string)null);
});
modelBuilder.Entity("CannedNet.LoadScreen", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("ImageUrl")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "imageUrl");
b.Property<bool>("IsThumbnail")
.HasColumnType("boolean")
.HasAnnotation("Relational:JsonPropertyName", "isThumbnail");
b.Property<int>("RoomId")
.HasColumnType("integer");
b.Property<string>("Tooltip")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "tooltip");
b.HasKey("Id");
b.HasIndex("RoomId");
b.ToTable("load_screens", (string)null);
});
modelBuilder.Entity("CannedNet.PlayerAvatar", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("FaceFeatures")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "FaceFeatures");
b.Property<string>("HairColor")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "HairColor");
b.Property<string>("OutfitSelections")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "OutfitSelections");
b.Property<int>("OwnerAccountId")
.HasColumnType("integer");
b.Property<string>("SkinColor")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "SkinColor");
b.HasKey("Id");
b.HasIndex("OwnerAccountId")
.IsUnique();
b.ToTable("player_avatars", (string)null);
});
modelBuilder.Entity("CannedNet.PlayerProgression", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("Level")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "level");
b.Property<int>("PlayerId")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "playerId");
b.Property<int>("Xp")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "xp");
b.HasKey("Id");
b.HasIndex("PlayerId")
.IsUnique();
b.ToTable("player_progressions", (string)null);
});
modelBuilder.Entity("CannedNet.PlayerSetting", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("Key")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "key");
b.Property<int>("PlayerId")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "playerId");
b.Property<string>("Value")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "value");
b.HasKey("Id");
b.HasIndex("PlayerId", "Key")
.IsUnique();
b.ToTable("player_settings", (string)null);
});
modelBuilder.Entity("CannedNet.PromoExternalContent", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("RoomId")
.HasColumnType("integer");
b.Property<string>("Tooltip")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "tooltip");
b.Property<int>("Type")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "type");
b.Property<string>("Url")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "url");
b.HasKey("Id");
b.HasIndex("RoomId");
b.ToTable("promo_external_contents", (string)null);
});
modelBuilder.Entity("CannedNet.PromoImage", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("ImageUrl")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "imageUrl");
b.Property<int>("RoomId")
.HasColumnType("integer");
b.Property<int>("SortOrder")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "sortOrder");
b.Property<string>("Tooltip")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "tooltip");
b.HasKey("Id");
b.HasIndex("RoomId");
b.ToTable("promo_images", (string)null);
});
modelBuilder.Entity("CannedNet.Room", b =>
{
b.Property<int>("Id")
.HasColumnType("integer");
b.Property<int>("Accessibility")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "accessibility");
b.Property<bool>("CloningAllowed")
.HasColumnType("boolean")
.HasAnnotation("Relational:JsonPropertyName", "cloningAllowed");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasAnnotation("Relational:JsonPropertyName", "createdAt");
b.Property<int>("CreatorAccountId")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "creatorAccountId");
b.Property<string>("CustomWarning")
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "customWarning");
b.Property<string>("Description")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "description");
b.Property<bool>("DisableMicAutoMute")
.HasColumnType("boolean")
.HasAnnotation("Relational:JsonPropertyName", "disableMicAutoMute");
b.Property<bool>("DisableRoomComments")
.HasColumnType("boolean")
.HasAnnotation("Relational:JsonPropertyName", "disableRoomComments");
b.Property<bool>("EncryptVoiceChat")
.HasColumnType("boolean")
.HasAnnotation("Relational:JsonPropertyName", "encryptVoiceChat");
b.Property<string>("ImageName")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "imageName");
b.Property<bool>("IsDorm")
.HasColumnType("boolean")
.HasAnnotation("Relational:JsonPropertyName", "isDorm");
b.Property<bool>("IsRRO")
.HasColumnType("boolean")
.HasAnnotation("Relational:JsonPropertyName", "isRRO");
b.Property<int>("MinLevel")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "minLevel");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "name");
b.Property<int>("RoomId")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "roomId");
b.Property<int>("State")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "state");
b.Property<bool>("SupportsJuniors")
.HasColumnType("boolean")
.HasAnnotation("Relational:JsonPropertyName", "supportsJuniors");
b.Property<bool>("SupportsLevelVoting")
.HasColumnType("boolean")
.HasAnnotation("Relational:JsonPropertyName", "supportsLevelVoting");
b.Property<bool>("SupportsMobile")
.HasColumnType("boolean")
.HasAnnotation("Relational:JsonPropertyName", "supportsMobile");
b.Property<bool>("SupportsQuest2")
.HasColumnType("boolean")
.HasAnnotation("Relational:JsonPropertyName", "supportsQuest2");
b.Property<bool>("SupportsScreens")
.HasColumnType("boolean")
.HasAnnotation("Relational:JsonPropertyName", "supportsScreens");
b.Property<bool>("SupportsTeleportVR")
.HasColumnType("boolean")
.HasAnnotation("Relational:JsonPropertyName", "supportsTeleportVR");
b.Property<bool>("SupportsVRLow")
.HasColumnType("boolean")
.HasAnnotation("Relational:JsonPropertyName", "supportsVRLow");
b.Property<bool>("SupportsWalkVR")
.HasColumnType("boolean")
.HasAnnotation("Relational:JsonPropertyName", "supportsWalkVR");
b.Property<string>("Tags")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "tags");
b.Property<int>("WarningMask")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "warningMask");
b.HasKey("Id");
b.HasIndex("CreatorAccountId");
b.ToTable("rooms", (string)null);
});
modelBuilder.Entity("CannedNet.RoomInstance", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<bool>("EncryptVoiceChat")
.HasColumnType("boolean")
.HasAnnotation("Relational:JsonPropertyName", "EncryptVoiceChat");
b.Property<int>("OwnerAccountId")
.HasColumnType("integer");
b.Property<int>("clubId")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "clubId");
b.Property<string>("dataBlob")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "dataBlob");
b.Property<int>("eventId")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "eventId");
b.Property<bool>("isFull")
.HasColumnType("boolean")
.HasAnnotation("Relational:JsonPropertyName", "isFull");
b.Property<bool>("isInProgress")
.HasColumnType("boolean")
.HasAnnotation("Relational:JsonPropertyName", "isInProgress");
b.Property<bool>("isPrivate")
.HasColumnType("boolean")
.HasAnnotation("Relational:JsonPropertyName", "isPrivate");
b.Property<string>("location")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "location");
b.Property<int>("maxCapacity")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "maxCapacity");
b.Property<string>("name")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "name");
b.Property<string>("photonRegionId")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "photonRegionId");
b.Property<string>("photonRoomId")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "photonRoomId");
b.Property<string>("roomCode")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "roomCode");
b.Property<int>("roomId")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "roomId");
b.Property<int>("roomInstanceId")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "roomInstanceId");
b.Property<int>("roomInstanceType")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "roomInstanceType");
b.Property<int>("subRoomId")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "subRoomId");
b.HasKey("Id");
b.HasIndex("OwnerAccountId", "roomId");
b.ToTable("room_instances", (string)null);
});
modelBuilder.Entity("CannedNet.RoomRole", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("AccountId")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "accountId");
b.Property<int>("InvitedRole")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "invitedRole");
b.Property<int>("Role")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "role");
b.Property<int>("RoomId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("RoomId");
b.ToTable("room_roles", (string)null);
});
modelBuilder.Entity("CannedNet.SavedOutfit", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("FaceFeatures")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "FaceFeatures");
b.Property<string>("HairColor")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "HairColor");
b.Property<string>("OutfitSelections")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "OutfitSelections");
b.Property<int>("OwnerAccountId")
.HasColumnType("integer");
b.Property<string>("PreviewImageName")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "PreviewImageName");
b.Property<string>("SkinColor")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "SkinColor");
b.Property<int>("Slot")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "Slot");
b.HasKey("Id");
b.HasIndex("OwnerAccountId")
.IsUnique();
b.ToTable("saved_outfits", (string)null);
});
modelBuilder.Entity("CannedNet.SubRoom", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("Accessibility")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "accessibility");
b.Property<string>("DataBlob")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "dataBlob");
b.Property<DateTime>("DataSavedAt")
.HasColumnType("timestamp with time zone")
.HasAnnotation("Relational:JsonPropertyName", "dataSavedAt");
b.Property<bool>("IsSandbox")
.HasColumnType("boolean")
.HasAnnotation("Relational:JsonPropertyName", "isSandbox");
b.Property<int>("MaxPlayers")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "maxPlayers");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "name");
b.Property<int>("RoomId")
.HasColumnType("integer");
b.Property<int>("SubRoomId")
.HasColumnType("integer")
.HasAnnotation("Relational:JsonPropertyName", "subRoomId");
b.Property<string>("UnitySceneId")
.IsRequired()
.HasColumnType("text")
.HasAnnotation("Relational:JsonPropertyName", "unitySceneId");
b.HasKey("Id");
b.HasIndex("RoomId");
b.ToTable("sub_rooms", (string)null);
});
#pragma warning restore 612, 618
}
}
}
@@ -0,0 +1,37 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace CannedNet.Migrations
{
/// <inheritdoc />
public partial class RemoveUniqueOwnerAccountId : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropIndex(
name: "IX_room_instances_OwnerAccountId",
table: "room_instances");
migrationBuilder.CreateIndex(
name: "IX_room_instances_OwnerAccountId_roomId",
table: "room_instances",
columns: new[] { "OwnerAccountId", "roomId" });
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropIndex(
name: "IX_room_instances_OwnerAccountId_roomId",
table: "room_instances");
migrationBuilder.CreateIndex(
name: "IX_room_instances_OwnerAccountId",
table: "room_instances",
column: "OwnerAccountId",
unique: true);
}
}
}
@@ -549,8 +549,7 @@ namespace CannedNet.Migrations
b.HasKey("Id");
b.HasIndex("OwnerAccountId")
.IsUnique();
b.HasIndex("OwnerAccountId", "roomId");
b.ToTable("room_instances", (string)null);
});
+6 -13
View File
@@ -712,31 +712,23 @@ public class APIService
if (room == null)
return Results.NotFound();
var include = request.Query["include"].FirstOrDefault() ?? "";
bool includeSubRooms = include.Contains("subRooms", StringComparison.OrdinalIgnoreCase);
bool includeRoles = include.Contains("roles", StringComparison.OrdinalIgnoreCase);
bool includeLoadScreens = include.Contains("loadScreens", StringComparison.OrdinalIgnoreCase);
bool includePromoImages = include.Contains("promoImages", StringComparison.OrdinalIgnoreCase);
bool includeExternal = include.Contains("promoExternalContent", StringComparison.OrdinalIgnoreCase);
var subRooms = includeSubRooms
var subRooms = true
? await db.SubRooms.Where(x => x.RoomId == room.RoomId).ToListAsync()
: new List<SubRoom>();
var roles = includeRoles
var roles = true
? await db.RoomRoles.Where(x => x.RoomId == room.RoomId).ToListAsync()
: new List<RoomRole>();
var loadScreens = includeLoadScreens
var loadScreens = true
? await db.LoadScreens.Where(x => x.RoomId == room.RoomId).ToListAsync()
: new List<LoadScreen>();
var promoImages = includePromoImages
var promoImages = true
? await db.PromoImages.Where(x => x.RoomId == room.RoomId).ToListAsync()
: new List<PromoImage>();
var external = includeExternal
var external = true
? await db.PromoExternalContents.Where(x => x.RoomId == room.RoomId).ToListAsync()
: new List<PromoExternalContent>();
@@ -784,6 +776,7 @@ public class APIService
SubRooms = subRooms.Select(s => new
{
s.SubRoomId,
s.RoomId,
s.Name,
s.DataBlob,
s.IsSandbox,
+1 -1
View File
@@ -8,7 +8,7 @@ public class CommerceService
{
app.MapGet("/purchase/v1/hasspentmoney", (HttpRequest request) =>
{
return "true";
return Results.NotFound();
});
}
}
+8 -36
View File
@@ -72,18 +72,6 @@ public class MatchmakingService
roomData = await db.Rooms.FirstOrDefaultAsync(r => r.Name.ToLower() == roomLower);
}
if (roomData == null && roomLower == "dormroom")
{
roomData = new Room
{
RoomId = 1,
Name = "DormRoom",
Description = "Your private room",
CreatorAccountId = id,
EncryptVoiceChat = false
};
}
if (roomData == null)
{
return Results.NotFound("Room not found");
@@ -95,16 +83,6 @@ public class MatchmakingService
int subRoomId = subRoom?.SubRoomId ?? 0;
int maxCapacity = subRoom?.MaxPlayers ?? 4;
if (string.IsNullOrEmpty(location))
{
location = "76d98498-60a1-430c-ab76-b54a29b7a163";
}
if (subRoomId == 0)
{
subRoomId = 1;
}
var publicInstance = await db.RoomInstances
.FirstOrDefaultAsync(r => r.roomId == roomData.RoomId && !r.isPrivate && !r.isFull);
@@ -155,7 +133,7 @@ public class MatchmakingService
name = roomData.Name,
maxCapacity = maxCapacity,
isFull = false,
isPrivate = false,
isPrivate = roomData.RoomId == 1,
isInProgress = false,
EncryptVoiceChat = roomData.EncryptVoiceChat
};
@@ -189,13 +167,11 @@ public class MatchmakingService
name = instanceToUse?.name ?? roomData.Name,
maxCapacity = instanceToUse?.maxCapacity ?? maxCapacity,
isFull = instanceToUse?.isFull ?? false,
isPrivate = instanceToUse?.isPrivate ?? false,
isPrivate = roomData.RoomId == 1 ? true : (instanceToUse?.isPrivate ?? false),
isInProgress = instanceToUse?.isInProgress ?? false,
EncryptVoiceChat = instanceToUse?.EncryptVoiceChat ?? roomData.EncryptVoiceChat
}
};
Console.WriteLine($"[DEBUG] Full response: {System.Text.Json.JsonSerializer.Serialize(response)}");
return Results.Json(response);
});
@@ -263,7 +239,10 @@ public class MatchmakingService
if (heartbeat == null)
heartbeat = new HeartbeatRequest();
var roomInstance = await db.RoomInstances.FirstOrDefaultAsync(r => r.OwnerAccountId == id);
var roomInstance = await db.RoomInstances
.Where(r => r.OwnerAccountId == id)
.OrderByDescending(r => r.Id)
.FirstOrDefaultAsync();
return Results.Json(new
{
@@ -291,7 +270,7 @@ public class MatchmakingService
isInProgress = roomInstance.isInProgress,
EncryptVoiceChat = roomInstance.EncryptVoiceChat
} : null,
isOnline = true,
isOnline = roomInstance != null && roomInstance.roomId != 1,
appVersion = heartbeat.appVersion ?? "",
platform = heartbeat.platform
});
@@ -301,15 +280,8 @@ public class MatchmakingService
// TODO ADD FUNCTIONALITY
return Results.Ok();
});
app.MapPut("/roominstance/{id}/reportjoinresult", async (HttpRequest request, AppDbContext db) =>
app.MapPost("/roominstance/{id}/reportjoinresult", async (HttpRequest request, AppDbContext db) =>
{
request.EnableBuffering();
request.Body.Position = 0;
using var reader = new StreamReader(request.Body);
var body = await reader.ReadToEndAsync();
Console.WriteLine($"[DEBUG] reportjoinresult body: {body}");
return Results.Ok();
});
}