Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
99 commits
Select commit Hold shift + click to select a range
7d4e200
test(unit): added unit tests for 3 functions + script that runs tests
bivafra Jul 6, 2024
903c922
test(tool): added coverage tool
bivafra Jul 6, 2024
e11476b
test(unit): renamed a test
bivafra Jul 7, 2024
9da7dac
Add file for keyboards
examplefirstaccount Jun 27, 2024
a56233a
Add file for handling user working time setting
examplefirstaccount Jun 27, 2024
162f63b
Add /set_personal_working_time to commands and modify handlers file f…
examplefirstaccount Jun 27, 2024
b152c01
Added files to store callback dataclasses and pydantic models for tim…
examplefirstaccount Jun 30, 2024
6f5c9ad
Added callbacks for intervals editing and weekday toggling
examplefirstaccount Jun 30, 2024
e4a584b
Added base models for time intervals and weekdays
examplefirstaccount Jun 30, 2024
5c62df4
Maded some minor changes to make classe ssimplier
examplefirstaccount Jun 30, 2024
8d60442
Add callbacks and inline queries to buttons
examplefirstaccount Jun 30, 2024
e8fd73a
Add all necessary handlers for menu with schedule
examplefirstaccount Jun 30, 2024
2a8a803
Fix bug with phantom notifications (again)
examplefirstaccount Jun 30, 2024
0212ae8
Added interval validation and exceptions
examplefirstaccount Jul 1, 2024
5634a9a
Add messages if user entered invalid interval
examplefirstaccount Jul 1, 2024
3fb3a71
Add keyboard markup for wrong interval input
examplefirstaccount Jul 1, 2024
e56994d
Add handlers for wrong input and reentering intervals
examplefirstaccount Jul 1, 2024
263d5c5
Added default intervals handling
examplefirstaccount Jul 1, 2024
8181087
Added fields in db
bivafra Jul 1, 2024
c2dd336
Added middlewares file and connected them with dispatcher
examplefirstaccount Jul 2, 2024
03e8af1
feat(topics): store separate chat states for supergroup topics
Fullerite Jul 1, 2024
722553b
feat(topics): send reminders w.r.t topics
Fullerite Jul 1, 2024
261a568
fix(configs): revert accidental change in settings configuration file
Fullerite Jul 2, 2024
40f8659
Edit Interval class to use datetime instead of datetime.time
examplefirstaccount Jul 3, 2024
e645f11
(feat) Modified merge intervals function to merge only unique intervals
examplefirstaccount Jul 5, 2024
6267295
(feat) add file for storing custom FSM states
examplefirstaccount Jul 5, 2024
7925843
feat: change default callback separator symbol from ':' to '|' to be …
examplefirstaccount Jul 5, 2024
9dfdfd3
feat: edit empty schedule to be dictionary instead of list
examplefirstaccount Jul 5, 2024
adf6875
feat: edit mongodb config to return datetime in offset-aware state
examplefirstaccount Jul 5, 2024
1489a85
feat: edit filters to work with callbacks
examplefirstaccount Jul 5, 2024
43ac036
feat: add group of states for interval editing
examplefirstaccount Jul 5, 2024
a60a445
feat: edit interval model to store times in UTC
examplefirstaccount Jul 5, 2024
dfb5a15
feat: modify keyboards for new callbacks and intervals
examplefirstaccount Jul 5, 2024
4ea8bd8
feat: add fields to chat user document to handle interval editing
examplefirstaccount Jul 5, 2024
8020a29
feat: edit error messages to more use friendly form
examplefirstaccount Jul 5, 2024
ac88eeb
feat: connect al operations with mongodb and rework interval editng
examplefirstaccount Jul 5, 2024
a9d272b
test(unit): added tests for Interaval class
bivafra Jul 7, 2024
bd6cced
feat(CI): add file for CI settings in Github Actions
examplefirstaccount Jul 7, 2024
f1397af
refactor(linter): Fix linter errors
examplefirstaccount Jul 7, 2024
ab8320e
fix(CI): add dependencies for testing in yaml file
examplefirstaccount Jul 7, 2024
8beb577
fix(CI): add dependencies for testing in CI
examplefirstaccount Jul 7, 2024
a686b33
fix(CI): add motor dependency for testing in CI
examplefirstaccount Jul 7, 2024
475a0d5
feat(CI): update ci-team-34.yaml
examplefirstaccount Jul 7, 2024
8862c54
feat(CI): update ci-team-34.yaml
examplefirstaccount Jul 7, 2024
e1f6ad5
refactor(tests): updated .coverage
bivafra Jul 7, 2024
d8097aa
feat(linter): added ruff(linter)
bivafra Jul 7, 2024
737b047
feat(keyboards): add file for keyboards
examplefirstaccount Jun 27, 2024
4bb9a98
feat(schedule): add file for handling user working time setting
examplefirstaccount Jun 27, 2024
3f6e1fe
feat(commands): add /set_personal_working_time to commands and modify…
examplefirstaccount Jun 27, 2024
eef5add
feat(intervals): add files to store callback dataclasses and pydantic…
examplefirstaccount Jun 30, 2024
631c95c
feat(callbacks): add callbacks for intervals editing and weekday togg…
examplefirstaccount Jun 30, 2024
1fd29d3
feat(intervals): add base models for time intervals and weekdays
examplefirstaccount Jun 30, 2024
a0ec6e0
fix(intervals): made some minor changes to make classes simplier
examplefirstaccount Jun 30, 2024
22a5362
feat(keyboards): add callbacks and inline queries to buttons
examplefirstaccount Jun 30, 2024
577fcd8
feat(schedule): add all necessary handlers for menu with schedule
examplefirstaccount Jun 30, 2024
bbb2e2d
fix(reminders): fix bug with phantom notifications (again)
examplefirstaccount Jun 30, 2024
e55b83f
feat(intervals): add interval validation and exceptions
examplefirstaccount Jul 1, 2024
8272ce8
feat(messages): add messages if user entered invalid interval
examplefirstaccount Jul 1, 2024
c176819
feat(keyboards): add keyboard markup for wrong interval input
examplefirstaccount Jul 1, 2024
5e52323
feat(schedule): add handlers for wrong input and reentering intervals
examplefirstaccount Jul 1, 2024
7b50b4f
feat(schedule): add default intervals handling
examplefirstaccount Jul 1, 2024
f0624c2
feat(db): add fields in db
bivafra Jul 1, 2024
9636cee
feat(middlewares): add middlewares file and connected them with dispa…
examplefirstaccount Jul 2, 2024
1b18343
feat(topics): store separate chat states for supergroup topics
Fullerite Jul 1, 2024
ddb81c6
feat(topics): implement per-topic meeting messages
Fullerite Jul 1, 2024
9a44fce
refactor(typing): adjust topic_id type hint
Fullerite Jul 1, 2024
ebd81c7
feat(topics): send reminders w.r.t topics
Fullerite Jul 1, 2024
c55e219
fix(configs): revert accidental change in settings configuration file
Fullerite Jul 2, 2024
54cf428
feat(intervals): edit Interval class to use datetime instead of datet…
examplefirstaccount Jul 3, 2024
8d69cb1
feat(intervals): modified merge intervals function to merge only uniq…
examplefirstaccount Jul 5, 2024
67438bd
feat(fsm): add file for storing custom FSM states
examplefirstaccount Jul 5, 2024
ae4e2bb
feat(callbacks): change default callback separator symbol from ':' to…
examplefirstaccount Jul 5, 2024
1aa70f1
feat(constants): edit empty schedule to be dictionary instead of list
examplefirstaccount Jul 5, 2024
ea768bc
feat(db): edit mongodb config to return datetime in offset-aware state
examplefirstaccount Jul 5, 2024
2476d8c
feat(filters): edit filters to work with callbacks
examplefirstaccount Jul 5, 2024
9d68903
feat(fsm): add group of states for interval editing
examplefirstaccount Jul 5, 2024
fbf55ca
feat(intervals): edit interval model to store times in UTC
examplefirstaccount Jul 5, 2024
658dfdc
feat(keyboards): modify keyboards for new callbacks and intervals
examplefirstaccount Jul 5, 2024
efc42b8
feat(db): add fields to chat user document to handle interval editing
examplefirstaccount Jul 5, 2024
ffb0109
feat(messages): edit error messages to more use friendly form
examplefirstaccount Jul 5, 2024
14a8f53
feat(schedule): connect all operations with mongodb and rework interv…
examplefirstaccount Jul 5, 2024
dfb05d8
refactor(linter): delete unused imports and other errors caught by li…
examplefirstaccount Jul 7, 2024
65931af
feat(schedule): add timezone changing support
examplefirstaccount Jul 7, 2024
28c9597
fix(reminders): fix indents in user block message and add text to not…
examplefirstaccount Jul 8, 2024
454d217
feat(commands): edit command name for schedule editing
examplefirstaccount Jul 11, 2024
d0a5573
refactor(schedule): edit command and function names, refactor field o…
examplefirstaccount Jul 11, 2024
1a105a9
fix(intervals): rework algorithm for interval merging
examplefirstaccount Jul 11, 2024
b9a619f
feat(keyboards): add missing keyboards from scenario
examplefirstaccount Jul 11, 2024
9f4fb63
feat(messages): add missing messages from scenario
examplefirstaccount Jul 11, 2024
dd1be6e
feat(schedule): add logic to work with default and personal schedule …
examplefirstaccount Jul 11, 2024
7890b35
feat(intervals): add function to ckeck if time is in schedule or not
examplefirstaccount Jul 12, 2024
91fc646
feat(meetings): add check if user is working by his working hours
examplefirstaccount Jul 12, 2024
d6dad45
feat(schedule): remove legacy command for setting working days
examplefirstaccount Jul 12, 2024
afd9945
feat(menu): add all commands' names and descriptions to Telegram comm…
examplefirstaccount Jul 13, 2024
17cb847
feat(intervals): add uuid for each interval and add function for shif…
examplefirstaccount Jul 13, 2024
e6d9ae4
refactor(merge): resolved merge conflict
bivafra Jul 14, 2024
3c9283a
refactor(merge): resolved merge conflicts
bivafra Jul 14, 2024
8635ca5
refactor(tests): refactored code according to the linter
bivafra Jul 14, 2024
f5ef747
fear(changelog): added git-cliff tool
bivafra Jul 14, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .coverage
Binary file not shown.
58 changes: 58 additions & 0 deletions .github/workflows/ci-team-34.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: Team 34 CI Pipeline

on: [push, pull_request]

env:
POETRY_VERSION: "1.8.3"
DEFAULT_PY_VERSION: "3.11"

jobs:
lint:
runs-on: ubuntu-latest
steps:

- name: Checkout code
uses: actions/checkout@v2

- name: Set up Python
uses: actions/setup-python@v1
with:
python-version: ${{ env.DEFAULT_PY_VERSION }}

- name: Linting
env:
RUFF_OUTPUT_FORMAT: github
run: |
pip install ruff
ruff check bot

test-with-coverage:
needs: lint
runs-on: ubuntu-latest
steps:

- name: Checkout code
uses: actions/checkout@v2

- name: Install Poetry
shell: bash
run: pipx install poetry==${{ env.POETRY_VERSION }}

- name: Set up Python
uses: actions/setup-python@v1
with:
python-version: ${{ env.DEFAULT_PY_VERSION }}

- name: Install dependencies
run: poetry install

- name: Run tests with coverage
run: |
poetry run coverage run -m pytest tests
poetry run coverage report

- name: Upload coverage report
uses: actions/upload-artifact@v2
with:
name: coverage-report
path: coverage.xml
2 changes: 1 addition & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,4 @@
},
"terminal.integrated.scrollback": 100000,
"workbench.sideBar.location": "right"
}
}
313 changes: 313 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,313 @@
# Changelog

All notable changes to this project will be documented in this file.

## [unreleased]

### 🚀 Features

- *(flake)* Add flake
- *(flake)* Add direnv config
- *(gitignore)* Ignore direnv and mypy directories
- *(flake)* Package the bot
- *(docker)* Add dockerfile
- *(docker)* Add compose file
- *(bot)* Add cli
- *(bot)* Add the 'get_subscribers' command
- *(bot)* Schedule since the specified date
- *(flake)* Use treefmt-nix
- *(flake)* Scripts
- *(bot, readme)* Provide an example for '/set_meeting_time'
- *(license)* Add mit license
- *(bot)* Add ru messages
- *(requirements)* Init
- *(requirements)* Add meeting questions
- *(readme)* Add i18n section
- *(scripts)* Add a script to generate locales files
- *(locales)* Add ru and en
- *(dockerfile)* Copy locales
- *(readme)* Motivation
- *(requirements)* Add glossary
- *(requirements)* Define command types
- *(requirements)* Add dialog scenarios
- *(scripts)* Add script to start a bot
- *(requirements)* Add references
- *(requirements)* Add top-level section name
- *(poetry)* Add Babel as a dev dependency
- *(configuration)* Draft a roles and responsibilities doc
- *(policies-processes-procedures)* Init
- *(policies-processes-procedures)* Add processes diagram
- *(nodejs)* Add package.json and package-lock.json
- *(gitignore)* Ignore nodejs directory
- *(sprint-docs)* Init in Russian
- *(git-workflow-process)* Init
- *(vscode)* Add recommended extensions
- *(vscode)* Add settings
- *(vscode)* Add Live Share to recommended extensions
- *(snippets)* Init snippet for receiving reminders
- *(scenarios)* Init a scenario
- *(snippets)* Add handle reminder period change state
- *(glossary)* Init
- *(scenarios)* Add a link to glossary
- *(scenarios)* Add a link to glossary
- *(scenarios)* Init a scenario template
- *(git-workflow-process)* Init
- *(vscode)* Add recommended extensions
- *(vscode)* Add settings
- *(vscode)* Add Live Share to recommended extensions
- *(snippets)* Init snippet for receiving reminders
- *(scenarios)* Init a scenario
- *(snippets)* Add handle reminder period change state
- *(glossary)* Init
- *(scenarios)* Add a link to glossary
- *(scenarios)* Add a link to glossary
- *(sprint)* Add a link to policy, process, procedure explanation
- *(sprint)* Add an Issues policy
- *(topics)* Store separate chat states for supergroup topics
- *(topics)* Implement per-topic meeting messages
- *(topics)* Send reminders w.r.t topics
- *(scenarios)* Add set_personal_meetings_time scenario
- *(scenarios)* Add the definition of a "period"
- *(docs)* Add glossary
- *(vscode)* Add markdown sort to sort the glossary
- *(issues)* Specify when a task is completed
- *(issues)* Add a scenario issue form
- *(issues)* Disable blank issues
- *(issues)* Add script to generate issue forms
- *(issues)* Add templates
- *(flake)* Add jinja2-cli to devshell tools
- *(glossary)* Define Actor
- *(glossary)* Add cross-references
- *(docker)* Enable environment variables for authentication
- *(bot)* Use mongo service name, username and password from env variables
- *(topics)* Store separate chat states for supergroup topics
- *(topics)* Send reminders w.r.t topics
- Change default callback separator symbol from ':' to '|' to be able to work with intervals
- Edit empty schedule to be dictionary instead of list
- Edit mongodb config to return datetime in offset-aware state
- Edit filters to work with callbacks
- Add group of states for interval editing
- Edit interval model to store times in UTC
- Modify keyboards for new callbacks and intervals
- Add fields to chat user document to handle interval editing
- Edit error messages to more use friendly form
- Connect al operations with mongodb and rework interval editng
- *(CI)* Add file for CI settings in Github Actions
- *(CI)* Update ci-team-34.yaml
- *(CI)* Update ci-team-34.yaml
- *(linter)* Added ruff(linter)
- *(keyboards)* Add file for keyboards
- *(schedule)* Add file for handling user working time setting
- *(commands)* Add /set_personal_working_time to commands and modify handlers file for work time settings
- *(intervals)* Add files to store callback dataclasses and pydantic models for time intervals
- *(callbacks)* Add callbacks for intervals editing and weekday toggling
- *(intervals)* Add base models for time intervals and weekdays
- *(keyboards)* Add callbacks and inline queries to buttons
- *(schedule)* Add all necessary handlers for menu with schedule
- *(intervals)* Add interval validation and exceptions
- *(messages)* Add messages if user entered invalid interval
- *(keyboards)* Add keyboard markup for wrong interval input
- *(schedule)* Add handlers for wrong input and reentering intervals
- *(schedule)* Add default intervals handling
- *(db)* Add fields in db
- *(middlewares)* Add middlewares file and connected them with dispatcher
- *(topics)* Store separate chat states for supergroup topics
- *(topics)* Implement per-topic meeting messages
- *(topics)* Send reminders w.r.t topics
- *(intervals)* Edit Interval class to use datetime instead of datetime.time
- *(intervals)* Modified merge intervals function to merge only unique intervals
- *(fsm)* Add file for storing custom FSM states
- *(callbacks)* Change default callback separator symbol from ':' to '|' to be able to work with intervals
- *(constants)* Edit empty schedule to be dictionary instead of list
- *(db)* Edit mongodb config to return datetime in offset-aware state
- *(filters)* Edit filters to work with callbacks
- *(fsm)* Add group of states for interval editing
- *(intervals)* Edit interval model to store times in UTC
- *(keyboards)* Modify keyboards for new callbacks and intervals
- *(db)* Add fields to chat user document to handle interval editing
- *(messages)* Edit error messages to more use friendly form
- *(schedule)* Connect all operations with mongodb and rework interval editng
- *(schedule)* Add timezone changing support
- *(commands)* Edit command name for schedule editing
- *(keyboards)* Add missing keyboards from scenario
- *(messages)* Add missing messages from scenario
- *(schedule)* Add logic to work with default and personal schedule + keyboards for interval editing + Cancel/Save layout
- *(intervals)* Add function to ckeck if time is in schedule or not
- *(meetings)* Add check if user is working by his working hours
- *(schedule)* Remove legacy command for setting working days
- *(menu)* Add all commands' names and descriptions to Telegram command menu
- *(intervals)* Add uuid for each interval and add function for shift recalculating

### 🐛 Bug Fixes

- *(bot)* Make it work
- *(bot)* Remove unused imports
- *(bot, readme)* Bot description
- *(bot)* Help message
- *(bot)* Improve wording in the description
- *(description)* Use 'Daily Scrum' instead of 'scrum stand-up' in descriptions
- *(bot)* Move files
- *(poetry)* Remove unused dependencies
- *(bot)* Rename a module because python doesn't like types.py
- *(flake)* Add more 'follows'
- *(poetry)* Remove old package from dependencies
- *(bot, readme)* Use a data directory
- *(bot)* Strip spaces
- *(bot, docker)* Use mongo, add basic time handling
- *(bot)* Switch to ISO 8601 time, rename 'state' -> 'chat_state'
- *(bot)* Improve messages for the 'unsubscribe' command
- *(bot)* Schedule meetings no earlier than on the set date and time
- *(flake)* Remove poetry2nix
- *(bot)* Wording
- *(bot)* Don't run a job after the job has expired long ago
- *(poetry)* Add babel
- *(scripts)* Run command via poetry
- *(readme)* Bot description
- *(requirements)* Update non-functional requirements
- *(requirements)* Section name
- *(requirements)* I18n
- *(requirements)* Commands
- *(readme)* Add motivation point
- *(requirements)* Wording
- *(bot)* Move files
- *(docker)* Update bot directory
- *(locales)* Update bot directory
- *(poetry)* Update bot directory
- *(flake)* Update script
- *(requirements)* Update command names
- *(readme)* Bot link
- *(bot)* Sample time
- *(bot)* Handle missing users
- *(readme)* Update project name, description, messages
- *(readme)* Instructions for running
- *(bot)* Wording
- *(readme)* Wording
- *(bot)* Add blank lines in messages
- *(bot)* Wording
- *(configuration)* Wording
- *(configuration)* Anchors
- *(configuration)* Links
- *(roles-and-responsibilities)* Sort members in the lexicographic order
- *(roles-and-responsibilities)* Remove todo
- *(roles-and-responsibilities)* Use lists in Reponsible people sections
- *(roles-and-responsibilities)* Update Task activity sections
- *(roles-and-responsibilities)* Remove the `GitHub Issues Management` responsibility
- *(roles-and-responsibilities)* Combine the Mini App responsibility with Backend and Frontend responsibilities
- *(roles-and-responsibilities)* Format the file
- *(roles-and-responsibilities)* Replace "Task characteristics" with "Task activity"
- *(roles-and-responsibilities)* Improve wording in "Task activity" sections
- *(scenarios)* Rename "Person" -> "User"
- *(scenarios)* Wording
- *(scenarios)* Wording
- *(snippets)* Simplify wording
- *(snippets)* Simplify wording
- *(snippets)* Rename "Person" -> "User"
- *(snippets)* Use more precise terminology
- *(snippets)* Use more precise terminology
- *(scenarios)* Improve wording
- *(scenarios)* Improve wording
- *(scenarios)* Move the definition of uppercase words to glossary
- *(scenarios)* Update scenario template
- *(scenarios)* Rename "Person" -> "User"
- *(scenarios)* Wording
- *(scenarios)* Wording
- *(snippets)* Simplify wording
- *(snippets)* Simplify wording
- *(snippets)* Rename "Person" -> "User"
- *(snippets)* Use more precise terminology
- *(snippets)* Use more precise terminology
- *(scenarios)* Improve wording
- *(scenarios)* Improve wording
- *(scenarios)* Term formatting
- *(configuration)* Remove old file
- *(reminder)* Make message babel-friendly
- *(configs)* Revert accidental change in settings configuration file
- *(scenarios)* Optimize set_personal_meetings_time tapping + and changing timeslot
- *(scenarios)* Change command name
- *(scenarios)* Describe bot buttons in the message about wrong format of an interval
- *(scenarios)* Remove a redundant quote
- *(scenarios)* Replace "period" with "interval"
- *(glossary)* Explain the UPPERCASE words more prominently
- *(glossary)* Move to the `docs` directory
- *(scenarios)* Links to the glossary
- *(scenarios)* Remove old glossary
- *(glossary)* Use sections for definitions
- *(issues)* Update the template
- *(issues)* Rename the template
- *(issues)* Rewrite a list
- *(issues)* Update the template
- *(issues)* Remove an unnecessary template
- *(issues)* Improve wording
- *(issues)* Improve grammar
- *(issues)* Improve wording
- *(issues)* Rewrite using passive voice
- *(issues)* Sentence order
- *(issues)* Formatting
- *(issues)* Improve term
- *(issues)* Default title
- *(issues)* Remove templates
- *(issues)* Template values
- *(issues)* Use a space for the form title
- *(issues)* Use variables in form titles
- *(issues)* Add an assignee for scenario issues
- *(issues)* Add default labels for scenario issues
- *(issues)* Change quote pairs
- *(issues)* Remove full stops
- *(issues)* Don't please
- *(sprint)* Use the main glossary
- *(glossary)* Add missing links
- *(issues)* Improve wording in scenario issue forms
- *(issues)* Explain the rules for the Task issue title
- *(issues)* Wording
- *(issues)* Update default labels
- *(docker)* Make the bot service depend on the mongodb service
- *(readme)* Update .env example to mention username and password
- *(configs)* Revert accidental change in settings configuration file
- *(CI)* Add dependencies for testing in yaml file
- *(CI)* Add dependencies for testing in CI
- *(CI)* Add motor dependency for testing in CI
- *(intervals)* Made some minor changes to make classes simplier
- *(reminders)* Fix bug with phantom notifications (again)
- *(configs)* Revert accidental change in settings configuration file
- *(reminders)* Fix indents in user block message and add text to notification message
- *(intervals)* Rework algorithm for interval merging

### 🚜 Refactor

- *(bot)* Use a constant for week days
- *(bot)* Move bot message to constants
- *(bot)* Move messages to a separate module
- *(bot)* Change 'standup' to 'meeting' in more places
- *(bot)* Use a class for constants directly
- *(bot)* Move bot code to a separate module
- *(bot)* Simplify filters
- *(bot)* Use classes for command names and descriptions
- *(bot)* Construct messages using constants, organize code to support basic i18n
- *(readme)* Add Develop section
- *(typing)* Adjust topic_id type hint
- *(linter)* Fix linter errors
- *(tests)* Updated .coverage
- *(merge)* Resolved merge conflict
- *(typing)* Adjust topic_id type hint
- *(linter)* Delete unused imports and other errors caught by linter
- *(schedule)* Edit command and function names, refactor field order in db
- *(merge)* Resolved merge conflicts
- *(tests)* Refactored code according to the linter

### 🧪 Testing

- *(unit)* Added unit tests for 3 functions + script that runs tests
- *(tool)* Added coverage tool
- *(unit)* Renamed a test
- *(unit)* Added tests for Interaval class

### ⚙️ Miscellaneous Tasks

- *(locales)* Update
- *(issues)* Generate issue forms

### Init

- *(all)* Start development

<!-- generated by git-cliff -->
Loading