Added played_on_game_server achievement logic #268_achievements

This commit is contained in:
2023-07-15 14:42:01 +02:00
parent 3fb951a748
commit 189128f0d3
21 changed files with 188 additions and 27 deletions

View File

@@ -22,7 +22,7 @@ class AchievementsMigration(MigrationABC):
`Id` BIGINT NOT NULL AUTO_INCREMENT,
`Name` VARCHAR(255) NOT NULL,
`Attribute` VARCHAR(255) NOT NULL,
`Operator` VARCHAR(2) NOT NULL,
`Operator` VARCHAR(255) NOT NULL,
`Value` VARCHAR(255) NOT NULL,
`ServerId` BIGINT,
`CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6),
@@ -43,7 +43,7 @@ class AchievementsMigration(MigrationABC):
`ServerId` BIGINT,
`Name` VARCHAR(255) NOT NULL,
`Attribute` VARCHAR(255) NOT NULL,
`Operator` VARCHAR(2) NOT NULL,
`Operator` VARCHAR(255) NOT NULL,
`Value` VARCHAR(255) NOT NULL,
`Deleted` BOOL DEFAULT FALSE,
`DateFrom` DATETIME(6) NOT NULL,

View File

@@ -2,6 +2,7 @@ from datetime import datetime
from typing import Optional
from cpl_core.database import TableABC
from cpl_core.dependency_injection import ServiceProviderABC
from bot_data.model.server import Server
@@ -22,8 +23,8 @@ class Achievement(TableABC):
self._name = name
self._attribute = attribute
if operator not in ["==", "!=", "<=", ">=", "<", ">"]:
raise ValueError("operator must be ==,!=,<=,>=,< or >")
if self._is_operator_valid(operator):
raise ValueError("Operator invalid")
self._operator = operator
self._value = value
@@ -33,6 +34,13 @@ class Achievement(TableABC):
self._created_at = created_at if created_at is not None else self._created_at
self._modified_at = modified_at if modified_at is not None else self._modified_at
@ServiceProviderABC.inject
def _is_operator_valid(self, operator, service: ServiceProviderABC) -> bool:
from modules.achievements.achievement_service import AchievementService
achievements: AchievementService = service.get_service(AchievementService)
return operator not in achievements.get_operators()
@property
def id(self) -> int:
return self._id