annotate include/core/date.h @ 317:b1f4d1867ab1

services: VERY initial Kitsu support it only supports user authentication for now, but it's definitely a start.
author Paper <paper@paper.us.eu.org>
date Wed, 12 Jun 2024 04:07:10 -0400
parents 3ec7804abf17
children d928ec7b6a0d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
261
3ec7804abf17 include: make header guards more sane
Paper <paper@paper.us.eu.org>
parents: 258
diff changeset
1 #ifndef MINORI_CORE_DATE_H_
3ec7804abf17 include: make header guards more sane
Paper <paper@paper.us.eu.org>
parents: 258
diff changeset
2 #define MINORI_CORE_DATE_H_
85
c69230dc2b5d *: cleanup includes
Paper <mrpapersonic@gmail.com>
parents: 51
diff changeset
3
187
9613d72b097e *: multiple performance improvements
Paper <mrpapersonic@gmail.com>
parents: 174
diff changeset
4 #include "json/json_fwd.hpp"
9613d72b097e *: multiple performance improvements
Paper <mrpapersonic@gmail.com>
parents: 174
diff changeset
5
196
f0ff06a45c42 date: use std::optional for values
Paper <mrpapersonic@gmail.com>
parents: 187
diff changeset
6 #include <optional>
317
b1f4d1867ab1 services: VERY initial Kitsu support
Paper <paper@paper.us.eu.org>
parents: 261
diff changeset
7 #include <string>
196
f0ff06a45c42 date: use std::optional for values
Paper <mrpapersonic@gmail.com>
parents: 187
diff changeset
8
187
9613d72b097e *: multiple performance improvements
Paper <mrpapersonic@gmail.com>
parents: 174
diff changeset
9 class QDate;
85
c69230dc2b5d *: cleanup includes
Paper <mrpapersonic@gmail.com>
parents: 51
diff changeset
10
317
b1f4d1867ab1 services: VERY initial Kitsu support
Paper <paper@paper.us.eu.org>
parents: 261
diff changeset
11 /* TODO: refactor constructors, as they aren't meant
b1f4d1867ab1 services: VERY initial Kitsu support
Paper <paper@paper.us.eu.org>
parents: 261
diff changeset
12 * to be used in this way and may cause problems down
b1f4d1867ab1 services: VERY initial Kitsu support
Paper <paper@paper.us.eu.org>
parents: 261
diff changeset
13 * the line */
b1f4d1867ab1 services: VERY initial Kitsu support
Paper <paper@paper.us.eu.org>
parents: 261
diff changeset
14
9
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
15 class Date {
258
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
16 public:
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
17 using Year = unsigned int;
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
18 using Day = unsigned char;
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
19 enum class Month {
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
20 Jan = 0,
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
21 Feb,
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
22 Mar,
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
23 Apr,
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
24 May,
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
25 Jun,
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
26 Jul,
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
27 Aug,
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
28 Sep,
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
29 Oct,
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
30 Nov,
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
31 Dec
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
32 };
9
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
33
258
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
34 Date();
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
35 Date(Year y);
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
36 Date(Year y, Month m, Day d);
317
b1f4d1867ab1 services: VERY initial Kitsu support
Paper <paper@paper.us.eu.org>
parents: 261
diff changeset
37 Date(const std::string& str);
258
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
38 Date(const QDate& date);
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
39 Date(const nlohmann::json& json);
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
40 bool IsValid() const;
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
41 void SetYear(Year y);
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
42 void SetMonth(Month m);
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
43 void SetDay(Day d);
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
44 void VoidYear();
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
45 void VoidMonth();
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
46 void VoidDay();
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
47 std::optional<Year> GetYear() const;
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
48 std::optional<Month> GetMonth() const;
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
49 std::optional<Day> GetDay() const;
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
50 QDate GetAsQDate() const;
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
51 nlohmann::json GetAsAniListJson() const;
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
52
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
53 private:
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
54 std::optional<Year> year;
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
55 std::optional<Month> month;
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 197
diff changeset
56 std::optional<Day> day;
9
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
57 };
85
c69230dc2b5d *: cleanup includes
Paper <mrpapersonic@gmail.com>
parents: 51
diff changeset
58
261
3ec7804abf17 include: make header guards more sane
Paper <paper@paper.us.eu.org>
parents: 258
diff changeset
59 #endif // MINORI_CORE_DATE_H_