Skip to content

Commit

Permalink
Merge pull request #586 from RyanYappert/feat/clans-cleaned
Browse files Browse the repository at this point in the history
Feature: Clans
  • Loading branch information
RyanYappert authored Oct 4, 2024
2 parents eda86d4 + 61e88f9 commit 0d8b2c0
Show file tree
Hide file tree
Showing 139 changed files with 4,596 additions and 332 deletions.
83 changes: 0 additions & 83 deletions Arrowgene.Ddon.Database/Arrowgene.Ddon.Database.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -33,91 +33,8 @@
</ContentWithTargetPath>
</ItemGroup>

<ItemGroup>
<ContentWithTargetPath Remove="files\database\script\abilitypresets_migration_sqlite.sql" />
<ContentWithTargetPath Remove="files\database\script\bitterblack_maze_migration.sql" />
<ContentWithTargetPath Remove="files\database\script\crest_migration.sql" />
<ContentWithTargetPath Remove="Files\Database\Script\equippoints_migration.sql" />
<ContentWithTargetPath Remove="Files\Database\Script\equip_migration_sqlite.sql" />
<ContentWithTargetPath Remove="files\database\script\migration_msq_2.0.sql" />
<ContentWithTargetPath Remove="files\database\script\migration_msq_2.1.sql" />
<ContentWithTargetPath Remove="files\database\script\migration_msq_2.2.sql" />
<ContentWithTargetPath Remove="files\database\script\migration_msq_2.3.sql" />
<ContentWithTargetPath Remove="Files\Database\Script\migration_quest_variant.sql" />
<ContentWithTargetPath Remove="Files\Database\Script\migration_rented_pawn.sql" />
<ContentWithTargetPath Remove="Files\Database\Script\pawncraftingdata_migration.sql" />
<ContentWithTargetPath Remove="Files\Database\Script\schema_sqlite.sql" />
<ContentWithTargetPath Remove="files\database\script\uid_migration.sql" />
<ContentWithTargetPath Remove="files\database\script\migration_pp_sqlite.sql" />
<ContentWithTargetPath Remove="files\database\script\migration_mail_sqlite.sql" />
<ContentWithTargetPath Remove="files\database\script\migration_stamp_sqlite.sql" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\Arrowgene.Ddon.Shared\Arrowgene.Ddon.Shared.csproj" />
</ItemGroup>

<ItemGroup>
<None Update="Files\Database\Script\abilitypresets_migration_sqlite.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Files\Database\Script\binarydata_migration.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Files\Database\Script\bitterblack_maze_migration.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Files\Database\Script\crest_migration.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Files\Database\Script\equippoints_migration.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Files\Database\Script\equip_migration_sqlite.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Files\Database\Script\migration_msq_2.0.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Files\Database\Script\migration_msq_2.1.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Files\Database\Script\migration_msq_2.2.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Files\Database\Script\migration_msq_2.3.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Files\Database\Script\migration_rented_pawn.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Files\Database\Script\pawncraftingdata_migration.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Files\Database\Script\schema_sqlite.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Files\Database\Script\uid_migration.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Files\Database\Script\migration_pp_sqlite.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Files\Database\Script\migration_mail_sqlite.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Files\Database\Script\migration_stamp_sqlite.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Files\Database\Script\AddMissingOnDeleteCascades_migration.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Files\Database\Script\AddMissingOnDeleteCascades_migration.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Files\Database\Script\migration_quest_variant.sql">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>

</Project>
2 changes: 1 addition & 1 deletion Arrowgene.Ddon.Database/DdonDatabaseBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public static class DdonDatabaseBuilder
private static readonly ILogger Logger = LogProvider.Logger<Logger>(typeof(DdonDatabaseBuilder));
private const string DefaultSchemaFile = "Script/schema_sqlite.sql";

public const uint Version = 19;
public const uint Version = 20;

public static IDatabase Build(DatabaseSetting settings)
{
Expand Down
38 changes: 38 additions & 0 deletions Arrowgene.Ddon.Database/Files/Database/Script/clan_migration.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
CREATE TABLE "ddon_clan_param"
(
"clan_id" INTEGER PRIMARY KEY NOT NULL,
"clan_level" INTEGER NOT NULL,
"member_num" INTEGER NOT NULL,
"master_id" INTEGER NOT NULL,
"system_restriction" BOOLEAN NOT NULL,
"is_base_release" BOOLEAN NOT NULL,
"can_base_release" BOOLEAN NOT NULL,
"total_clan_point" INTEGER NOT NULL,
"money_clan_point" INTEGER NOT NULL,
"name" TEXT NOT NULL,
"short_name" TEXT NOT NULL,
"emblem_mark_type" SMALLINT NOT NULL,
"emblem_base_type" SMALLINT NOT NULL,
"emblem_main_color" SMALLINT NOT NULL,
"emblem_sub_color" SMALLINT NOT NULL,
"motto" INTEGER NOT NULL,
"active_days" INTEGER NOT NULL,
"active_time" INTEGER NOT NULL,
"characteristic" INTEGER NOT NULL,
"is_publish" BOOLEAN NOT NULL,
"comment" TEXT NOT NULL,
"board_message" TEXT NOT NULL,
"created" DATETIME NOT NULL
);

CREATE TABLE "ddon_clan_membership"
(
"character_id" INTEGER NOT NULL,
"clan_id" INTEGER NOT NULL,
"rank" INTEGER NOT NULL,
"permission" INTEGER NOT NULL,
"created" DATETIME NOT NULL,
CONSTRAINT "pk_ddon_clan_membership" PRIMARY KEY ("character_id", "clan_id"),
CONSTRAINT "fk_ddon_clan_membership_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE,
CONSTRAINT "fk_ddon_clan_membership_clan_id" FOREIGN KEY ("clan_id") REFERENCES "ddon_clan_param" ("clan_id") ON DELETE CASCADE
);
39 changes: 39 additions & 0 deletions Arrowgene.Ddon.Database/Files/Database/Script/schema_sqlite.sql
Original file line number Diff line number Diff line change
Expand Up @@ -713,3 +713,42 @@ CREATE TABLE IF NOT EXISTS "ddon_bbm_content_treasure"
"amount" INTEGER NOT NULL,
CONSTRAINT "fk_ddon_bbm_content_treasure_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);

CREATE TABLE IF NOT EXISTS "ddon_clan_param"
(
"clan_id" INTEGER PRIMARY KEY NOT NULL,
"clan_level" INTEGER NOT NULL,
"member_num" INTEGER NOT NULL,
"master_id" INTEGER NOT NULL,
"system_restriction" BOOLEAN NOT NULL,
"is_base_release" BOOLEAN NOT NULL,
"can_base_release" BOOLEAN NOT NULL,
"total_clan_point" INTEGER NOT NULL,
"money_clan_point" INTEGER NOT NULL,
"name" TEXT NOT NULL,
"short_name" TEXT NOT NULL,
"emblem_mark_type" SMALLINT NOT NULL,
"emblem_base_type" SMALLINT NOT NULL,
"emblem_main_color" SMALLINT NOT NULL,
"emblem_sub_color" SMALLINT NOT NULL,
"motto" INTEGER NOT NULL,
"active_days" INTEGER NOT NULL,
"active_time" INTEGER NOT NULL,
"characteristic" INTEGER NOT NULL,
"is_publish" BOOLEAN NOT NULL,
"comment" TEXT NOT NULL,
"board_message" TEXT NOT NULL,
"created" DATETIME NOT NULL
);

CREATE TABLE IF NOT EXISTS "ddon_clan_membership"
(
"character_id" INTEGER NOT NULL,
"clan_id" INTEGER NOT NULL,
"rank" INTEGER NOT NULL,
"permission" INTEGER NOT NULL,
"created" DATETIME NOT NULL,
CONSTRAINT "pk_ddon_clan_membership" PRIMARY KEY ("character_id", "clan_id"),
CONSTRAINT "fk_ddon_clan_membership_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE,
CONSTRAINT "fk_ddon_clan_membership_clan_id" FOREIGN KEY ("clan_id") REFERENCES "ddon_clan_param" ("clan_id") ON DELETE CASCADE
);
16 changes: 15 additions & 1 deletion Arrowgene.Ddon.Database/IDatabase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
using Arrowgene.Ddon.Shared.Entity.Structure;
using Arrowgene.Ddon.Shared.Model;
using Arrowgene.Ddon.Shared.Model.BattleContent;
using Arrowgene.Ddon.Shared.Model.Clan;
using Arrowgene.Ddon.Shared.Model.Quest;

namespace Arrowgene.Ddon.Database
Expand Down Expand Up @@ -521,7 +522,7 @@ uint crestAmount

// Bitterblack Maze Progress
bool InsertBBMCharacterId(uint characterId, uint bbmCharacterId);
uint SelectBBMCharacterId(uint characterId);
uint SelectBBMCharacterId(uint characterId, DbConnection? connectionIn = null);
uint SelectBBMNormalCharacterId(uint bbmCharacterId);
bool InsertBBMProgress(
uint characterId,
Expand Down Expand Up @@ -568,5 +569,18 @@ bool InsertBBMContentTreasure(
bool UpdateBBMContentTreasure(uint characterId, uint contentId, uint amount);
bool RemoveBBMContentTreasure(uint characterId);
List<BitterblackMazeTreasure> SelectBBMContentTreasure(uint characterId);

// Clan
bool CreateClan(CDataClanParam clanParam);
bool DeleteClan(CDataClanParam clan, DbConnection? connectionIn = null);
uint SelectClanMembershipByCharacterId(uint characterId, DbConnection? connectionIn = null);
ClanName GetClanNameByClanId(uint clanId, DbConnection? connectionIn = null);
CDataClanParam SelectClan(uint clanId, DbConnection? connectionIn = null);
bool UpdateClan(CDataClanParam clan, DbConnection? connectionIn = null);
bool InsertClanMember(CDataClanMemberInfo memberInfo, uint clanId, DbConnection? connectionIn = null);
bool DeleteClanMember(uint characterId, uint clanId, DbConnection? connectionIn = null);
List<CDataClanMemberInfo> GetClanMemberList(uint clanId, DbConnection? connectionIn = null);
CDataClanMemberInfo GetClanMember(uint characterId, DbConnection? connectionIn = null);
bool UpdateClanMember(CDataClanMemberInfo memberInfo, uint clanId, DbConnection? connectionIn = null);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System.Collections.Generic;
using System.ComponentModel.Design;
using System.Data.Common;
using System.Security.Claims;
using System.Xml;
using Arrowgene.Ddon.Shared.Model;
using Arrowgene.Ddon.Shared.Model.BattleContent;
Expand Down Expand Up @@ -38,16 +39,12 @@ public bool InsertBBMCharacterId(TCon connection, uint characterId, uint bbmChar
}) == 1;
}

public uint SelectBBMCharacterId(uint characterId)
{
using TCon connection = OpenNewConnection();
return SelectBBMCharacterId(connection, characterId);
}

public uint SelectBBMCharacterId(TCon connection, uint characterId)
public uint SelectBBMCharacterId(uint characterId, DbConnection? connectionIn = null)
{
uint bbmCharacterId = 0;
ExecuteInTransaction(connection =>
bool isTransaction = connectionIn is not null;
TCon connection = (TCon)(connectionIn ?? OpenNewConnection());
try
{
ExecuteReader(connection, SqlSelectBBMCharacterId, command =>
{
Expand All @@ -59,8 +56,11 @@ public uint SelectBBMCharacterId(TCon connection, uint characterId)
bbmCharacterId = GetUInt32(reader, "bbm_character_id");
}
});
});

}
finally
{
if (!isTransaction) connection.Dispose();
}
return bbmCharacterId;
}

Expand Down
36 changes: 29 additions & 7 deletions Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbCharacter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -236,15 +236,33 @@ public List<Character> SelectAllCharacters(DbConnection conn)

public bool DeleteCharacter(uint characterId)
{
uint bbmCharacterId = SelectBBMCharacterId(characterId);
if (bbmCharacterId > 0)
int rowsAffected = 0;
ExecuteInTransaction(conn =>
{
ExecuteNonQuery(SqlDeleteCharacter,
command => { AddParameter(command, "@character_id", bbmCharacterId); });
}
var clan = SelectClanMembershipByCharacterId(characterId, conn);
if (clan != 0)
{
if (GetClanMemberList(clan, conn).Count == 1)
{
DeleteClan(clan, conn);
}
else
{
IncrementClanMemberNum(-1, clan, conn);
}
}
uint bbmCharacterId = SelectBBMCharacterId(characterId, conn);
if (bbmCharacterId > 0)
{
ExecuteNonQuery(conn, SqlDeleteCharacter,
command => { AddParameter(command, "@character_id", bbmCharacterId); });
}
int rowsAffected = ExecuteNonQuery(SqlDeleteCharacter,
command => { AddParameter(command, "@character_id", characterId); });
rowsAffected = ExecuteNonQuery(conn, SqlDeleteCharacter,
command => { AddParameter(command, "@character_id", characterId); });
});

return rowsAffected > NoRowsAffected;
}

Expand Down Expand Up @@ -396,6 +414,10 @@ private void QueryCharacterData(TCon conn, Character character)
}
});
}

//Clan membership
character.ClanId = SelectClanMembershipByCharacterId(character.CharacterId, conn);
character.ClanName = GetClanNameByClanId(character.ClanId);
}

public bool UpdateMyPawnSlot(uint characterId, uint num)
Expand Down
Loading

0 comments on commit 0d8b2c0

Please sign in to comment.