Added played_on_game_server achievement logic #268_achievements
This commit is contained in:
@@ -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,
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user