#include #include #include #include #include #include #include "../../objects/calendarevent/CalendarEvent.h" #include "../../common/colour.h" #ifndef __LIBRARIES_CALENDARDATASTORAGE_H__ #define __LIBRARIES_CALENDARDATASTORAGE_H__ /*enum CDSAddEntryResult{ CDSADDENTRY_UNITTESTFAIL = -1, CDSADDENTRY_OK }*/ enum CDSAccountResult{ CDSACCOUNT_UNITTESTFAIL = -1, CDSACCOUNT_OK, CDSACCOUNT_FAILED, CDSACCOUNT_NOACTION, CDSACCOUNT_NOACCOUNT }; enum CDSCalendarResult{ CDSCALENDAR_UNITTESTFAIL = -1, CDSCALENDAR_OK, CDSCALENDAR_FAILED, CDSCALENDAR_NOACTION, CDSCALENDAR_NOCALENDAR }; enum CDSEntryResult{ CDSENTRY_UNITTESTFAIL = -1, CDSENTRY_OK, CDSENTRY_FAILED, CDSENTRY_NOACTION, CDSENTRY_NOACCOUNT, CDSENTRY_NOCALENDAR, CDSENTRY_NOENTRY, CDSENTRY_MISSINGFILE, CDSENTRY_CANNOTOPENFILE, CDSENTRY_INVALIDFILE, }; struct CDSGetAccountInfo{ int accountID = 0; std::string accountName = ""; CDSAccountResult accountInfoResult = CDSACCOUNT_NOACTION; }; struct CDSGetCalendarInfo{ int accountID = 0; int calendarID = 0; std::string accountName = ""; std::string calendarName = ""; std::string calendarTextID = ""; Colour calendarColour; CDSAccountResult accountInfoResult = CDSACCOUNT_NOACTION; CDSCalendarResult calendarInfoResult = CDSCALENDAR_NOACTION; }; struct CDSAddEntryResult{ int calendarEntryID = 0; CDSEntryResult addEventResult = CDSENTRY_NOACTION; }; struct CDSGetCalendarEntryInfo{ int accountID = 0; int calendarID = 0; int calendarEntryID = 0; std::string entryName = ""; std::string entryDescription = ""; int entryStartYear = 0; int entryStartMonth = 0; int entryStartDay = 0; int entryStartHour = 0; int entryStartMinute = 0; int entryStartSecond = 0; int entryEndYear = 0; int entryEndMonth = 0; int entryEndDay = 0; int entryEndHour = 0; int entryEndMinute = 0; int entryEndSecond = 0; int entryDurationWeeks = 0; int entryDurationDays = 0; int entryDurationHours = 0; int entryDurationMinutes = 0; int entryDurationSeconds = 0; CDSEntryResult getEventResult = CDSENTRY_NOACTION; }; struct CDSEntryList{ std::vector entryList; CDSEntryResult getEventListResult = CDSENTRY_NOACTION; }; struct CDSCalendarList{ std::vector calendarList; std::vector calendarListTextID; CDSCalendarResult getCalendarListResult = CDSCALENDAR_NOACTION; }; struct CDSAccountList{ std::vector accountList; CDSAccountResult getAccountListResult = CDSACCOUNT_NOACTION; }; class CalendarDataStorage{ private: sqlite3 *db = nullptr; void SetupTables(); bool DataStorageInitOK = false; public: CalendarDataStorage(); ~CalendarDataStorage(); bool DidInitOK(); // Account functions. CDSAccountResult AddAccount(std::string accountName); CDSGetAccountInfo GetAccount(std::string accountName); CDSAccountResult UpdateAccount(int accountID, std::string accountName); CDSAccountResult DeleteAccount(int accountID); CDSAccountList GetAccountList(); // Calendar functions. CDSCalendarResult AddCalendar(int accountID, std::string calendarName, std::string calendarID, Colour calendarColour); CDSGetCalendarInfo GetCalendar(std::string accountName, std::string calendarTextID); CDSCalendarList GetCalendarList(int accountID); CDSCalendarResult UpdateCalendar(int calendarID, std::string calendarName); CDSCalendarResult DeleteCalendar(int calendarID); // Entry functions CDSAddEntryResult AddEvent(int calendarID, std::string filename); CDSGetCalendarEntryInfo GetEvent(int calendarEntryID); CDSEntryList GetEventList(int calendarID); CDSEntryResult DeleteEvent(int calendarEntryID); }; #endif