Added add dialog #410

This commit is contained in:
2023-11-18 22:15:18 +01:00
parent a3ebd07093
commit 74dba4b981
25 changed files with 504 additions and 278 deletions

View File

@@ -4,13 +4,14 @@ from typing import Optional
import discord
from cpl_core.database import TableABC
from bot_data.model.scheduled_event_interval_enum import ScheduledEventIntervalEnum
from bot_data.model.server import Server
class ScheduledEvent(TableABC):
def __init__(
self,
interval: str,
interval: ScheduledEventIntervalEnum,
name: str,
description: str,
channel_id: int,
@@ -43,11 +44,11 @@ class ScheduledEvent(TableABC):
return self._id
@property
def interval(self) -> str:
def interval(self) -> ScheduledEventIntervalEnum:
return self._interval
@interval.setter
def interval(self, value: str):
def interval(self, value: ScheduledEventIntervalEnum):
self._interval = value
@property
@@ -145,11 +146,11 @@ class ScheduledEvent(TableABC):
return str(
f"""
INSERT INTO `ScheduledEvents` (
`Interval`, `Name`, `Description`, `ChannelId`, `StartTime`, `EndTime`, `EntityType`, `Location`, `ServerId`,
`Interval`, `Name`, `Description`, `ChannelId`, `StartTime`, `EndTime`, `EntityType`, `Location`, `ServerId`
) VALUES (
'{self._interval}',
'{self._interval.value}',
'{self._name}',
'{self._description}',
{"NULL" if self._description is None else f"'{self._description}'"},
{"NULL" if self._channel_id is None else f"'{self._channel_id}'"},
'{self._start_time}',
{"NULL" if self._end_time is None else f"'{self._end_time}'"},
@@ -165,7 +166,7 @@ class ScheduledEvent(TableABC):
return str(
f"""
UPDATE `ScheduledEvents`
SET `Interval` = '{self._interval}',
SET `Interval` = '{self._interval.value}',
`Name` = '{self._name}',
`Description` = '{self._start_time}',
`ChannelId` = {"NULL" if self._channel_id is None else f"'{self._channel_id}'"},

View File

@@ -0,0 +1,8 @@
from enum import Enum
class ScheduledEventIntervalEnum(Enum):
daily = "daily"
weekly = "weekly"
monthly = "monthly"
yearly = "yearly"

View File

@@ -1,9 +1,9 @@
CREATE TABLE IF NOT EXISTS `ScheduledEvents`
(
`Id` BIGINT NOT NULL AUTO_INCREMENT,
`Interval` VARCHAR(255) NOT NULL,
`Interval` ENUM ('daily', 'weekly', 'monthly', 'yearly') NOT NULL,
`Name` VARCHAR(255) NOT NULL,
`Description` VARCHAR(255) NOT NULL,
`Description` VARCHAR(255) NULL,
`ChannelId` BIGINT NULL,
`StartTime` DATETIME(6) NOT NULL,
`EndTime` DATETIME(6) NULL,
@@ -19,9 +19,9 @@ CREATE TABLE IF NOT EXISTS `ScheduledEvents`
CREATE TABLE IF NOT EXISTS `ScheduledEventsHistory`
(
`Id` BIGINT(20) NOT NULL,
`Interval` VARCHAR(255) NOT NULL,
`Interval` ENUM ('daily', 'weekly', 'monthly', 'yearly') NOT NULL,
`Name` VARCHAR(255) NOT NULL,
`Description` VARCHAR(255) NOT NULL,
`Description` VARCHAR(255) NULL,
`ChannelId` BIGINT NULL,
`StartTime` DATETIME(6) NOT NULL,
`EndTime` DATETIME(6) NULL,

View File

@@ -7,6 +7,7 @@ from bot_core.logging.database_logger import DatabaseLogger
from bot_data.abc.server_repository_abc import ServerRepositoryABC
from bot_data.abc.scheduled_event_repository_abc import ScheduledEventRepositoryABC
from bot_data.model.scheduled_event import ScheduledEvent
from bot_data.model.scheduled_event_interval_enum import ScheduledEventIntervalEnum
class ScheduledEventRepositoryService(ScheduledEventRepositoryABC):
@@ -32,17 +33,17 @@ class ScheduledEventRepositoryService(ScheduledEventRepositoryABC):
def _scheduled_event_from_result(self, sql_result: tuple) -> ScheduledEvent:
return ScheduledEvent(
self._get_value_from_result(sql_result[0]), # interval
self._get_value_from_result(sql_result[1]), # name
self._get_value_from_result(sql_result[2]), # description
int(self._get_value_from_result(sql_result[3])), # channel_id
self._get_value_from_result(sql_result[4]), # start_time
self._get_value_from_result(sql_result[5]), # end_time
self._get_value_from_result(sql_result[6]), # entity_type
self._get_value_from_result(sql_result[7]), # location
self._servers.get_server_by_id((sql_result[8])), # server
self._get_value_from_result(sql_result[9]), # created_at
self._get_value_from_result(sql_result[10]), # modified_at
self._get_value_from_result(ScheduledEventIntervalEnum(sql_result[1])), # interval
self._get_value_from_result(sql_result[2]), # name
self._get_value_from_result(sql_result[3]), # description
int(self._get_value_from_result(sql_result[4])), # channel_id
self._get_value_from_result(sql_result[5]), # start_time
self._get_value_from_result(sql_result[6]), # end_time
self._get_value_from_result(sql_result[7]), # entity_type
self._get_value_from_result(sql_result[8]), # location
self._servers.get_server_by_id((sql_result[9])), # server
self._get_value_from_result(sql_result[10]), # created_at
self._get_value_from_result(sql_result[11]), # modified_at
id=self._get_value_from_result(sql_result[0]),
)