Compare commits

..

14 Commits

Author SHA1 Message Date
Dawid Bepierszcz
86e3f69989 Fixed migrations 2025-10-17 01:52:43 +02:00
Dawid Bepierszcz
4d19ac4d77 Delete CS2-SimpleAdmin/Database/Migration.cs 2025-10-17 01:50:52 +02:00
Dawid Bepierszcz
503d2f63c3 Fixed migrations 2025-10-17 01:50:22 +02:00
Dawid Bepierszcz
cb1bf60060 Delete CS2-SimpleAdmin/Database/Migrations/Mysql directory 2025-10-17 01:49:31 +02:00
Dawid Bepierszcz
3a57371be9 Updated StatusBlocker 2025-10-16 03:04:13 +02:00
Dawid Bepierszcz
63ca44bb78 Delete Modules/CS2-SimpleAdmin_StealthModule/METAMOD PLUGIN/StatusBlocker-v1.0.3-linux.tar.gz 2025-10-16 03:03:48 +02:00
Dawid Bepierszcz
3270403ea1 Delete Modules/CS2-SimpleAdmin_StealthModule/METAMOD PLUGIN/StatusBlocker-v1.0.3-windows.tar.gz 2025-10-16 03:03:40 +02:00
Dawid Bepierszcz
2edacc2b3f Merge branch 'main' of https://github.com/daffyyyy/CS2-SimpleAdmin 2025-10-03 12:10:52 +02:00
Dawid Bepierszcz
e1e66441f2 Remove custom ClearBuildFiles target and cleanup csproj
Commented out the GenerateDependencyFile property and removed the ClearBuildFiles target from the project file. Also reformatted and cleaned up the ItemGroup for migration scripts, improving maintainability.
2025-10-03 12:10:50 +02:00
Dawid Bepierszcz
cc54b9e879 Update README.md 2025-10-03 02:35:45 +02:00
Dawid Bepierszcz
640e618f3b Update README.md 2025-10-03 02:34:03 +02:00
Dawid Bepierszcz
23d174c4a5 Update build.yml 2025-10-03 02:26:07 +02:00
Dawid Bepierszcz
b7371adf26 Update build.yml 2025-10-03 02:23:07 +02:00
Dawid Bepierszcz
9154748ce6 Update build.yml 2025-10-03 02:19:05 +02:00
14 changed files with 245 additions and 246 deletions

View File

@@ -59,7 +59,7 @@ jobs:
cp -r ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMINAPI }}/* ${{ env.OUTPUT_PATH }}/shared/CS2-SimpleAdminApi/ cp -r ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMINAPI }}/* ${{ env.OUTPUT_PATH }}/shared/CS2-SimpleAdminApi/
- name: Zip Main Build Output - name: Zip Main Build Output
run: zip -r CS2-SimpleAdmin${{ steps.get_version.outputs.VERSION }}.zip ${{ env.OUTPUT_PATH }} run: zip -r CS2-SimpleAdmin-${{ steps.get_version.outputs.VERSION }}.zip ${{ env.OUTPUT_PATH }}
- name: Extract & Zip StatusBlocker Linux - name: Extract & Zip StatusBlocker Linux
run: | run: |
@@ -80,7 +80,7 @@ jobs:
with: with:
name: CS2-SimpleAdmin-Build-Artifacts name: CS2-SimpleAdmin-Build-Artifacts
path: | path: |
CS2-SimpleAdmin${{ steps.get_version.outputs.VERSION }}.zip CS2-SimpleAdmin-${{ steps.get_version.outputs.VERSION }}.zip
StatusBlocker-linux-${{ steps.get_version.outputs.VERSION }}.zip StatusBlocker-linux-${{ steps.get_version.outputs.VERSION }}.zip
StatusBlocker-windows-${{ steps.get_version.outputs.VERSION }}.zip StatusBlocker-windows-${{ steps.get_version.outputs.VERSION }}.zip
@@ -97,7 +97,7 @@ jobs:
name: CS2-SimpleAdmin-Build-Artifacts name: CS2-SimpleAdmin-Build-Artifacts
path: . path: .
- name: Unzip main build artifact - name: Unzip main build artifact
run: unzip CS2-SimpleAdmin${{ needs.build.outputs.build_version }}.zip -d ./counterstrikesharp run: unzip CS2-SimpleAdmin-${{ needs.build.outputs.build_version }}.zip -d ./counterstrikesharp
- name: Publish combined release - name: Publish combined release
uses: ncipollo/release-action@v1.14.0 uses: ncipollo/release-action@v1.14.0
with: with:

View File

@@ -15,7 +15,7 @@
<DebugSymbols>false</DebugSymbols> <DebugSymbols>false</DebugSymbols>
<PublishTrimmed>true</PublishTrimmed> <PublishTrimmed>true</PublishTrimmed>
<DebuggerSupport>false</DebuggerSupport> <DebuggerSupport>false</DebuggerSupport>
<GenerateDependencyFile>false</GenerateDependencyFile> <!-- <GenerateDependencyFile>false</GenerateDependencyFile>-->
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
@@ -34,111 +34,99 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\CS2-SimpleAdminApi\CS2-SimpleAdminApi.csproj" /> <ProjectReference Include="..\CS2-SimpleAdminApi\CS2-SimpleAdminApi.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Target Name="ClearBuildFiles" AfterTargets="PostBuildEvent"> <None Update="lang\**\*.*" CopyToOutputDirectory="PreserveNewest" />
<ItemGroup> <None Update="Database\Migrations\Mysql\001_CreateTables.sql">
<FilesToDelete Include="$(OutDir)Tomlyn.dll" /> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<FilesToDelete Include="$(OutDir)Serilog*.dll" /> </None>
<FilesToDelete Include="$(OutDir)CS2-SimpleAdminApi.*" /> <None Update="Database\Migrations\Mysql\002_CreateFlagsTable.sql">
<FilesToDelete Include="$(OutDir)McMaster*" /> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<FilesToDelete Include="$(OutDir)Scrutor.dll" /> </None>
</ItemGroup> <None Update="Database\Migrations\Mysql\003_ChangeColumnsPosition.sql">
<Delete Files="@(FilesToDelete)" /> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Target> </None>
<None Update="Database\Migrations\Mysql\004_MoveOldFlagsToFlagsTable.sql">
<ItemGroup> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<None Update="lang\**\*.*" CopyToOutputDirectory="PreserveNewest" /> </None>
<None Update="Database\Migrations\Mysql\001_CreateTables.sql"> <None Update="Database\Migrations\Mysql\005_CreateUnbansTable.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Update="Database\Migrations\Mysql\002_CreateFlagsTable.sql"> <None Update="Database\Migrations\Mysql\006_ServerGroupsFeature.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Update="Database\Migrations\Mysql\003_ChangeColumnsPosition.sql"> <None Update="Database\Migrations\Mysql\007_ServerGroupsGlobal.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Update="Database\Migrations\Mysql\004_MoveOldFlagsToFlagsTable.sql"> <None Update="Database\Migrations\Mysql\008_OnlineTimeInPenalties.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Update="Database\Migrations\Mysql\005_CreateUnbansTable.sql"> <None Update="Database\Migrations\Mysql\009_BanAllUsedIpAddress.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Update="Database\Migrations\Mysql\006_ServerGroupsFeature.sql"> <None Update="Database\Migrations\Mysql\010_CreateWarnsTable.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Update="Database\Migrations\Mysql\007_ServerGroupsGlobal.sql"> <None Update="Database\Migrations\Mysql\011_AddRconColumnToServersTable.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Update="Database\Migrations\Mysql\008_OnlineTimeInPenalties.sql"> <None Update="Database\Migrations\Mysql\012_AddUpdatedAtColumnToSaBansTable.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Update="Database\Migrations\Mysql\009_BanAllUsedIpAddress.sql"> <None Update="Database\Migrations\Mysql\013_AddNameColumnToSaPlayerIpsTable.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Update="Database\Migrations\Mysql\010_CreateWarnsTable.sql"> <None Update="Database\Migrations\Mysql\014_AddIndexesToMutesTable.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Update="Database\Migrations\Mysql\011_AddRconColumnToServersTable.sql"> <None Update="Database\Migrations\Mysql\015_steamidToBigInt.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Update="Database\Migrations\Mysql\012_AddUpdatedAtColumnToSaBansTable.sql"> <None Update="Database\Migrations\Sqlite\001_CreateTables.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Update="Database\Migrations\Mysql\013_AddNameColumnToSaPlayerIpsTable.sql"> <None Update="Database\Migrations\Sqlite\002_CreateFlagsTable.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Update="Database\Migrations\Mysql\014_AddIndexesToMutesTable.sql"> <None Update="Database\Migrations\Sqlite\003_ChangeColumnsPosition.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Update="Database\Migrations\Mysql\015_steamidToBigInt.sql"> <None Update="Database\Migrations\Sqlite\004_MoveOldFlagsToFlagsTable.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Update="Database\Migrations\Sqlite\001_CreateTables.sql"> <None Update="Database\Migrations\Sqlite\005_CreateUnbansTable.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Update="Database\Migrations\Sqlite\002_CreateFlagsTable.sql"> <None Update="Database\Migrations\Sqlite\006_ServerGroupsFeature.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Update="Database\Migrations\Sqlite\003_ChangeColumnsPosition.sql"> <None Update="Database\Migrations\Sqlite\007_ServerGroupsGlobal.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Update="Database\Migrations\Sqlite\004_MoveOldFlagsToFlagsTable.sql"> <None Update="Database\Migrations\Sqlite\008_OnlineTimeInPenalties.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Update="Database\Migrations\Sqlite\005_CreateUnbansTable.sql"> <None Update="Database\Migrations\Sqlite\009_BanAllUsedIpAddress.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Update="Database\Migrations\Sqlite\006_ServerGroupsFeature.sql"> <None Update="Database\Migrations\Sqlite\010_CreateWarnsTable.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Update="Database\Migrations\Sqlite\007_ServerGroupsGlobal.sql"> <None Update="Database\Migrations\Sqlite\011_AddRconColumnToServersTable.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Update="Database\Migrations\Sqlite\008_OnlineTimeInPenalties.sql"> <None Update="Database\Migrations\Sqlite\012_AddUpdatedAtColumnToSaBansTable.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Update="Database\Migrations\Sqlite\009_BanAllUsedIpAddress.sql"> <None Update="Database\Migrations\Sqlite\013_AddNameColumnToSaPlayerIpsTable.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Update="Database\Migrations\Sqlite\010_CreateWarnsTable.sql"> <None Update="Database\Migrations\Sqlite\014_AddIndexesToMutesTable.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Update="Database\Migrations\Sqlite\011_AddRconColumnToServersTable.sql"> <None Update="Database\Migrations\Sqlite\015_steamidToBigInt.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Update="Database\Migrations\Sqlite\012_AddUpdatedAtColumnToSaBansTable.sql"> </ItemGroup>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Database\Migrations\Sqlite\013_AddNameColumnToSaPlayerIpsTable.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Database\Migrations\Sqlite\014_AddIndexesToMutesTable.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Database\Migrations\Sqlite\015_steamidToBigInt.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup> <ItemGroup>
<None Update="Database\Migrations\*.sql" CopyToOutputDirectory="PreserveNewest" /> <None Update="Database\Migrations\*.sql" CopyToOutputDirectory="PreserveNewest" />

View File

@@ -1,94 +1,105 @@
using System.Data.Common; using System.Data.Common;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
namespace CS2_SimpleAdmin.Database; namespace CS2_SimpleAdmin.Database;
public class Migration(string migrationsPath) public class Migration(string migrationsPath)
{ {
/// <summary> /// <summary>
/// Executes all migration scripts found in the configured migrations path that have not been applied yet. /// Executes all migration scripts found in the configured migrations path that have not been applied yet.
/// Creates a migration tracking table if it does not exist. /// Creates a migration tracking table if it does not exist.
/// Applies migration scripts in filename order and logs successes or failures. /// Applies migration scripts in filename order and logs successes or failures.
/// </summary> /// </summary>
public async Task ExecuteMigrationsAsync() public async Task ExecuteMigrationsAsync()
{ {
if (CS2_SimpleAdmin.DatabaseProvider == null) return; if (CS2_SimpleAdmin.DatabaseProvider == null) return;
var files = Directory.GetFiles(migrationsPath, "*.sql").OrderBy(f => f).ToList(); var files = Directory.GetFiles(migrationsPath, "*.sql").OrderBy(f => f).ToList();
if (files.Count == 0) return; if (files.Count == 0) return;
await using var connection = await CS2_SimpleAdmin.DatabaseProvider.CreateConnectionAsync(); await using var connection = await CS2_SimpleAdmin.DatabaseProvider.CreateConnectionAsync();
await using (var cmd = connection.CreateCommand())
await using (var cmd = connection.CreateCommand()) {
{ if (migrationsPath.Contains("sqlite", StringComparison.CurrentCultureIgnoreCase))
cmd.CommandText = """ {
CREATE TABLE IF NOT EXISTS sa_migrations ( cmd.CommandText = """
id INTEGER PRIMARY KEY AUTOINCREMENT, CREATE TABLE IF NOT EXISTS sa_migrations (
version TEXT NOT NULL id INTEGER PRIMARY KEY AUTOINCREMENT,
); version TEXT NOT NULL
);
""";
""";
await cmd.ExecuteNonQueryAsync(); }
} else
{
var lastAppliedVersion = await GetLastAppliedVersionAsync(connection); cmd.CommandText = """
CREATE TABLE IF NOT EXISTS sa_migrations (
foreach (var file in files) id INT PRIMARY KEY AUTO_INCREMENT,
{ version VARCHAR(128) NOT NULL
var version = Path.GetFileNameWithoutExtension(file); );
if (string.Compare(version, lastAppliedVersion, StringComparison.OrdinalIgnoreCase) <= 0) """;
continue; }
try await cmd.ExecuteNonQueryAsync();
{ }
var sqlScript = await File.ReadAllTextAsync(file);
var lastAppliedVersion = await GetLastAppliedVersionAsync(connection);
await using (var cmdMigration = connection.CreateCommand())
{ foreach (var file in files)
cmdMigration.CommandText = sqlScript; {
await cmdMigration.ExecuteNonQueryAsync(); var version = Path.GetFileNameWithoutExtension(file);
} if (string.Compare(version, lastAppliedVersion, StringComparison.OrdinalIgnoreCase) <= 0)
continue;
await UpdateLastAppliedVersionAsync(connection, version);
try
CS2_SimpleAdmin._logger?.LogInformation($"Migration \"{version}\" successfully applied."); {
} var sqlScript = await File.ReadAllTextAsync(file);
catch (Exception ex)
{ await using (var cmdMigration = connection.CreateCommand())
CS2_SimpleAdmin._logger?.LogError(ex, $"Error applying migration \"{version}\"."); {
break; cmdMigration.CommandText = sqlScript;
} await cmdMigration.ExecuteNonQueryAsync();
} }
}
await UpdateLastAppliedVersionAsync(connection, version);
/// <summary>
/// Retrieves the version string of the last applied migration from the database. CS2_SimpleAdmin._logger?.LogInformation($"Migration \"{version}\" successfully applied.");
/// </summary> }
/// <param name="connection">The open database connection.</param> catch (Exception ex)
/// <returns>The version string of the last applied migration, or empty string if none.</returns> {
private static async Task<string> GetLastAppliedVersionAsync(DbConnection connection) CS2_SimpleAdmin._logger?.LogError(ex, $"Error applying migration \"{version}\".");
{ break;
await using var cmd = connection.CreateCommand(); }
cmd.CommandText = "SELECT version FROM sa_migrations ORDER BY id DESC LIMIT 1;"; }
var result = await cmd.ExecuteScalarAsync(); }
return result?.ToString() ?? string.Empty;
} /// <summary>
/// Retrieves the version string of the last applied migration from the database.
/// <summary> /// </summary>
/// Inserts a record tracking the successful application of a migration version. /// <param name="connection">The open database connection.</param>
/// </summary> /// <returns>The version string of the last applied migration, or empty string if none.</returns>
/// <param name="connection">The open database connection.</param> private static async Task<string> GetLastAppliedVersionAsync(DbConnection connection)
/// <param name="version">The version string of the migration applied.</param> {
private static async Task UpdateLastAppliedVersionAsync(DbConnection connection, string version) await using var cmd = connection.CreateCommand();
{ cmd.CommandText = "SELECT version FROM sa_migrations ORDER BY id DESC LIMIT 1;";
await using var cmd = connection.CreateCommand(); var result = await cmd.ExecuteScalarAsync();
cmd.CommandText = "INSERT INTO sa_migrations (version) VALUES (@Version);"; return result?.ToString() ?? string.Empty;
}
var param = cmd.CreateParameter();
param.ParameterName = "@Version"; /// <summary>
param.Value = version; /// Inserts a record tracking the successful application of a migration version.
cmd.Parameters.Add(param); /// </summary>
/// <param name="connection">The open database connection.</param>
await cmd.ExecuteNonQueryAsync(); /// <param name="version">The version string of the migration applied.</param>
} private static async Task UpdateLastAppliedVersionAsync(DbConnection connection, string version)
} {
await using var cmd = connection.CreateCommand();
cmd.CommandText = "INSERT INTO sa_migrations (version) VALUES (@Version);";
var param = cmd.CreateParameter();
param.ParameterName = "@Version";
param.Value = version;
cmd.Parameters.Add(param);
await cmd.ExecuteNonQueryAsync();
}
}

View File

@@ -36,6 +36,7 @@ CREATE TABLE IF NOT EXISTS `sa_admins` (
`flags` TEXT NULL, `flags` TEXT NULL,
`immunity` int(11) NOT NULL DEFAULT 0, `immunity` int(11) NOT NULL DEFAULT 0,
`server_id` INT NULL, `server_id` INT NULL,
`ends` timestamp NULL, `ends` timestamp NULL,
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`) PRIMARY KEY (`id`)

View File

@@ -20,7 +20,6 @@ CREATE TABLE IF NOT EXISTS `sa_groups_servers` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
ALTER TABLE `sa_admins` ADD `group_id` INT NULL AFTER `created`; ALTER TABLE `sa_admins` ADD `group_id` INT NULL AFTER `created`;
ALTER TABLE `sa_groups_flags` ADD FOREIGN KEY (`group_id`) REFERENCES `sa_groups`(`id`) ON DELETE CASCADE; ALTER TABLE `sa_groups_flags` ADD FOREIGN KEY (`group_id`) REFERENCES `sa_groups`(`id`) ON DELETE CASCADE;
ALTER TABLE `sa_groups_servers` ADD FOREIGN KEY (`group_id`) REFERENCES `sa_groups`(`id`) ON DELETE CASCADE; ALTER TABLE `sa_groups_servers` ADD FOREIGN KEY (`group_id`) REFERENCES `sa_groups`(`id`) ON DELETE CASCADE;
ALTER TABLE `sa_admins` ADD FOREIGN KEY (`group_id`) REFERENCES `sa_groups`(`id`) ON DELETE SET NULL; ALTER TABLE `sa_admins` ADD FOREIGN KEY (`group_id`) REFERENCES `sa_groups`(`id`) ON DELETE SET NULL;

View File

@@ -1 +1 @@
ALTER TABLE `sa_servers` ADD `rcon_password` varchar(128) NULL AFTER `hostname`; ALTER TABLE `sa_servers` ADD `rcon_password` varchar(128) NULL AFTER `hostname`;

View File

@@ -1,13 +1,13 @@
DELETE FROM `sa_players_ips` DELETE FROM `sa_players_ips`
WHERE `id` NOT IN ( WHERE `id` NOT IN (
SELECT * FROM ( SELECT * FROM (
SELECT MIN(`id`) SELECT MIN(`id`)
FROM `sa_players_ips` FROM `sa_players_ips`
GROUP BY `steamid` GROUP BY `steamid`
) AS `keep_ids` ) AS `keep_ids`
); );
DELETE FROM sa_players_ips WHERE INET_ATON(address) IS NULL AND address IS NOT NULL; DELETE FROM sa_players_ips WHERE INET_ATON(address) IS NULL AND address IS NOT NULL;
UPDATE `sa_players_ips` SET `address` = INET_ATON(address); UPDATE `sa_players_ips` SET `address` = INET_ATON(address);
ALTER TABLE `sa_players_ips` CHANGE `address` `address` INT UNSIGNED NOT NULL; ALTER TABLE `sa_players_ips` CHANGE `address` `address` INT UNSIGNED NOT NULL;
ALTER TABLE `sa_players_ips` ADD INDEX (used_at DESC); ALTER TABLE `sa_players_ips` ADD INDEX (used_at DESC);
ALTER TABLE `sa_players_ips` ADD `name` VARCHAR(64) NULL DEFAULT NULL AFTER `steamid`; ALTER TABLE `sa_players_ips` ADD `name` VARCHAR(64) NULL DEFAULT NULL AFTER `steamid`;

View File

@@ -1,3 +1,3 @@
ALTER TABLE sa_mutes ADD INDEX (player_steamid, status, ends); ALTER TABLE sa_mutes ADD INDEX (player_steamid, status, ends);
ALTER TABLE sa_mutes ADD INDEX(player_steamid, status, server_id, duration); ALTER TABLE sa_mutes ADD INDEX(player_steamid, status, server_id, duration);
ALTER TABLE sa_mutes ADD INDEX(player_steamid, type); ALTER TABLE sa_mutes ADD INDEX(player_steamid, type);

View File

@@ -1,23 +1,23 @@
ALTER TABLE `sa_bans` CHANGE `player_steamid` `player_steamid` BIGINT NULL DEFAULT NULL; ALTER TABLE `sa_bans` CHANGE `player_steamid` `player_steamid` BIGINT NULL DEFAULT NULL;
UPDATE `sa_bans` UPDATE `sa_bans`
SET admin_steamid = '0' SET admin_steamid = '0'
WHERE admin_steamid NOT REGEXP '^[0-9]+$'; WHERE admin_steamid NOT REGEXP '^[0-9]+$';
ALTER TABLE `sa_bans` CHANGE `admin_steamid` `admin_steamid` BIGINT NOT NULL; ALTER TABLE `sa_bans` CHANGE `admin_steamid` `admin_steamid` BIGINT NOT NULL;
ALTER TABLE `sa_mutes` CHANGE `player_steamid` `player_steamid` BIGINT NULL DEFAULT NULL; ALTER TABLE `sa_mutes` CHANGE `player_steamid` `player_steamid` BIGINT NULL DEFAULT NULL;
UPDATE `sa_mutes` UPDATE `sa_mutes`
SET admin_steamid = '0' SET admin_steamid = '0'
WHERE admin_steamid NOT REGEXP '^[0-9]+$'; WHERE admin_steamid NOT REGEXP '^[0-9]+$';
ALTER TABLE `sa_mutes` CHANGE `admin_steamid` `admin_steamid` BIGINT NOT NULL; ALTER TABLE `sa_mutes` CHANGE `admin_steamid` `admin_steamid` BIGINT NOT NULL;
ALTER TABLE `sa_warns` CHANGE `player_steamid` `player_steamid` BIGINT NULL DEFAULT NULL; ALTER TABLE `sa_warns` CHANGE `player_steamid` `player_steamid` BIGINT NULL DEFAULT NULL;
UPDATE `sa_warns` UPDATE `sa_warns`
SET admin_steamid = '0' SET admin_steamid = '0'
WHERE admin_steamid NOT REGEXP '^[0-9]+$'; WHERE admin_steamid NOT REGEXP '^[0-9]+$';
ALTER TABLE `sa_warns` CHANGE `admin_steamid` `admin_steamid` BIGINT NOT NULL; ALTER TABLE `sa_warns` CHANGE `admin_steamid` `admin_steamid` BIGINT NOT NULL;
UPDATE `sa_admins` UPDATE `sa_admins`
SET player_steamid = '0' SET player_steamid = '0'
WHERE player_steamid NOT REGEXP '^[0-9]+$'; WHERE player_steamid NOT REGEXP '^[0-9]+$';
ALTER TABLE `sa_admins` CHANGE `player_steamid` `player_steamid` BIGINT NULL DEFAULT NULL; ALTER TABLE `sa_admins` CHANGE `player_steamid` `player_steamid` BIGINT NULL DEFAULT NULL;

View File

@@ -8,8 +8,8 @@
<img src="https://img.shields.io/badge/Made_with-a_lot_of_tea_%F0%9F%8D%B5-red" alt="Made with a lot of tea 🍵" /> <img src="https://img.shields.io/badge/Made_with-a_lot_of_tea_%F0%9F%8D%B5-red" alt="Made with a lot of tea 🍵" />
</p> </p>
# [![Join the support Discord](https://img.shields.io/badge/Discord-Support-blue?logo=discord&logoColor=white)](https://discord.com/channels/1160907911501991946/1180627186865156126) [![Join the support Discord](https://img.shields.io/badge/Discord-Support-blue?logo=discord&logoColor=white)](https://discord.com/channels/1160907911501991946/1180627186865156126)
CS2-SimpleAdmin # CS2-SimpleAdmin
--- ---
@@ -103,4 +103,4 @@ If you find CS2-SimpleAdmin useful, consider supporting the ongoing development:
--- ---
## 📄 License ## 📄 License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. This project is licensed under the GPL-3.0 license - see the [LICENSE](LICENSE) file for details.