From a1c1accc872bebe881d276257a0d2ec164b0530a Mon Sep 17 00:00:00 2001 From: Fabrice Lecomte Date: Thu, 14 Jan 2021 11:23:27 +0100 Subject: [PATCH] Refactors Articles and Voter - Move files into components (article) - Split articles routes - Refactoring for remove ktor-voter (ArticleVoter) - Remove mutability - Move DataConversion to separate file (Converter.kt) - Add Schemas for Articles routes - Fix SQL Query for Workgroup roles - rename container_name in docker-compose --- .env | 2 +- .idea/codeStyles/Project.xml | 22 +-- .../Cucumber_Tests__offline_.xml | 6 - .idea/runConfigurations/Voter_Tests.xml | 6 - Makefile | 21 ++- build.gradle.kts | 5 +- doc/schema/Article.puml | 98 ++++++++++ docker-compose.yml | 14 +- docker/app/Dockerfile | 1 + src/main/kotlin/Application.kt | 162 +++------------- src/main/kotlin/ApplicationContext.kt | 13 +- src/main/kotlin/Converters.kt | 118 ++++++++++++ src/main/kotlin/{Module.kt => KoinModule.kt} | 10 +- src/main/kotlin/component/article/Article.kt | 126 +++++++++++++ .../article/ArticleRepository.kt} | 20 +- .../article}/ArticleViewManager.kt | 21 ++- .../kotlin/component/article/ArticleVoter.kt | 49 +++++ .../article/routes/FindArticleVersions.kt | 39 ++++ .../component/article/routes/FindArticles.kt | 46 +++++ .../component/article/routes/GetOneArticle.kt | 69 +++++++ .../component/article/routes/UpsertArticle.kt | 66 +++++++ src/main/kotlin/dto/CreatedAt.kt | 12 ++ src/main/kotlin/dto/Opinionable.kt | 11 ++ src/main/kotlin/dto/Versionable.kt | 15 ++ src/main/kotlin/dto/ViewAggregation.kt | 10 + src/main/kotlin/dto/Viewable.kt | 9 + src/main/kotlin/dto/Votable.kt | 9 + src/main/kotlin/dto/VoteAggregation.kt | 11 ++ src/main/kotlin/elasticsearch/Config.kt | 2 +- src/main/kotlin/entity/Article.kt | 114 ----------- src/main/kotlin/entity/Citizen.kt | 83 +++++--- src/main/kotlin/entity/Comment.kt | 73 +++++-- src/main/kotlin/entity/Constitution.kt | 22 +-- src/main/kotlin/entity/CreatedBy.kt | 13 ++ src/main/kotlin/entity/EntityI.kt | 8 + src/main/kotlin/entity/Extra.kt | 14 +- src/main/kotlin/entity/Follow.kt | 20 +- src/main/kotlin/entity/Opinion.kt | 24 ++- src/main/kotlin/entity/OpinionChoice.kt | 6 +- src/main/kotlin/entity/Opinionable.kt | 11 +- src/main/kotlin/entity/User.kt | 13 +- src/main/kotlin/entity/Versionable.kt | 17 ++ src/main/kotlin/entity/ViewAggregation.kt | 6 +- src/main/kotlin/entity/Viewable.kt | 9 - src/main/kotlin/entity/Votable.kt | 4 +- src/main/kotlin/entity/Vote.kt | 33 +++- src/main/kotlin/entity/VoteAggregation.kt | 4 +- src/main/kotlin/entity/Workgroup.kt | 44 +++-- src/main/kotlin/event/EventNotification.kt | 10 +- src/main/kotlin/event/EventSubscriber.kt | 5 +- .../messages/NotificationEmailSender.kt | 14 +- src/main/kotlin/repository/Comment.kt | 58 +++--- src/main/kotlin/repository/Constitution.kt | 6 +- src/main/kotlin/repository/Follow.kt | 13 +- src/main/kotlin/repository/Opinion.kt | 7 +- src/main/kotlin/repository/Vote.kt | 24 ++- src/main/kotlin/repository/Workgroup.kt | 8 +- src/main/kotlin/routes/Article.kt | 142 -------------- src/main/kotlin/routes/Comment.kt | 9 +- src/main/kotlin/routes/CommentArticle.kt | 11 +- src/main/kotlin/routes/CommentConstitution.kt | 4 +- src/main/kotlin/routes/Constitution.kt | 18 +- src/main/kotlin/routes/FollowArticle.kt | 12 +- src/main/kotlin/routes/FollowConstitution.kt | 10 +- src/main/kotlin/routes/OpinionArticle.kt | 4 +- src/main/kotlin/routes/VoteArticle.kt | 10 +- src/main/kotlin/routes/VoteConstitution.kt | 18 +- src/main/kotlin/routes/Workgroup.kt | 129 ++++++++----- src/main/kotlin/utils/DateTime.kt | 2 +- src/main/kotlin/utils/LoggerDelegate.kt | 2 +- src/main/kotlin/utils/Resources.kt | 6 +- src/main/kotlin/views/ViewManager.kt | 11 +- src/main/kotlin/voter/ArticleVoter.kt | 116 ------------ src/main/kotlin/voter/CitizenVoter.kt | 44 +++-- src/main/kotlin/voter/CommentVoter.kt | 56 +++--- src/main/kotlin/voter/ConstitutionVoter.kt | 46 ++--- src/main/kotlin/voter/FollowVoter.kt | 40 ++-- .../kotlin/voter/NoRuleDefinedException.kt | 6 + .../kotlin/voter/NoSubjectDefinedException.kt | 6 + src/main/kotlin/voter/OpinionChoiceVoter.kt | 17 +- src/main/kotlin/voter/OpinionVoter.kt | 44 ++--- src/main/kotlin/voter/VoteVoter.kt | 40 ++-- src/main/kotlin/voter/VoterModule.kt | 87 +++++++++ src/main/kotlin/voter/WorkgroupVoter.kt | 88 +++++---- src/main/resources/openapi.yaml | 4 - .../functions/article/find_article_by_id.sql | 11 +- .../sql/functions/article/find_articles.sql | 6 +- .../sql/functions/article/upsert_article.sql | 6 +- .../functions/citizen/find_citizen_by_id.sql | 1 - .../citizen/find_citizen_by_id_with_user.sql | 1 - .../functions/comment/find_comment_by_id.sql | 2 + .../comment/find_comment_parent_by_id.sql | 20 ++ .../comment/find_comments_by_citizen.sql | 2 + .../comment/find_comments_by_parent.sql | 1 + .../comment/find_comments_by_target.sql | 1 + .../sql/functions/helpers/json_to_array.sql | 5 + .../resources/sql/functions/vote/vote.sql | 11 +- .../functions/workgroup/upsert_workgroup.sql | 6 +- .../sql/migrations/0000-init_schema.down.sql | 1 + src/test/kotlin/ArticleTest.kt | 101 ---------- src/test/kotlin/ConstitutionTest.kt | 107 ----------- src/test/kotlin/FollowTest.kt | 109 ----------- src/test/kotlin/ViewTest.kt | 10 +- src/test/kotlin/VoteTest.kt | 132 ------------- src/test/kotlin/feature/ArticleSteps.kt | 8 +- src/test/kotlin/feature/CitizenSteps.kt | 5 +- src/test/kotlin/feature/ConstitutionSteps.kt | 6 +- src/test/kotlin/feature/FollowSteps.kt | 8 +- .../kotlin/feature/KtorServerAuthSteps.kt | 2 +- .../kotlin/feature/KtorServerRequestSteps.kt | 15 +- src/test/kotlin/feature/OpinionSteps.kt | 11 +- src/test/kotlin/feature/VoteSteps.kt | 6 +- src/test/kotlin/feature/WorkgroupSteps.kt | 7 +- .../kotlin/security/voter/ArticleVoterTest.kt | 178 +++++++----------- .../kotlin/security/voter/CitizenVoterTest.kt | 23 +-- .../kotlin/security/voter/CommentVoterTest.kt | 104 +++++----- .../kotlin/security/voter/FollowVoterTest.kt | 72 +++++-- .../security/voter/OpinionChoiceVoterTest.kt | 26 ++- .../kotlin/security/voter/OpinionVoterTest.kt | 38 ++-- .../kotlin/security/voter/VoteVoterTest.kt | 106 +++++++---- .../security/voter/WorkgroupVoterTest.kt | 36 ++-- src/test/resources/feature/citizen.feature | 2 +- .../resources/feature/followArticle.feature | 2 +- src/test/resources/feature/workgroup.feature | 28 +-- 124 files changed, 2026 insertions(+), 1828 deletions(-) create mode 100644 doc/schema/Article.puml create mode 100644 src/main/kotlin/Converters.kt rename src/main/kotlin/{Module.kt => KoinModule.kt} (95%) create mode 100644 src/main/kotlin/component/article/Article.kt rename src/main/kotlin/{repository/Article.kt => component/article/ArticleRepository.kt} (67%) rename src/main/kotlin/{views => component/article}/ArticleViewManager.kt (82%) create mode 100644 src/main/kotlin/component/article/ArticleVoter.kt create mode 100644 src/main/kotlin/component/article/routes/FindArticleVersions.kt create mode 100644 src/main/kotlin/component/article/routes/FindArticles.kt create mode 100644 src/main/kotlin/component/article/routes/GetOneArticle.kt create mode 100644 src/main/kotlin/component/article/routes/UpsertArticle.kt create mode 100644 src/main/kotlin/dto/CreatedAt.kt create mode 100644 src/main/kotlin/dto/Opinionable.kt create mode 100644 src/main/kotlin/dto/Versionable.kt create mode 100644 src/main/kotlin/dto/ViewAggregation.kt create mode 100644 src/main/kotlin/dto/Viewable.kt create mode 100644 src/main/kotlin/dto/Votable.kt create mode 100644 src/main/kotlin/dto/VoteAggregation.kt delete mode 100644 src/main/kotlin/entity/Article.kt create mode 100644 src/main/kotlin/entity/CreatedBy.kt create mode 100644 src/main/kotlin/entity/EntityI.kt create mode 100644 src/main/kotlin/entity/Versionable.kt delete mode 100644 src/main/kotlin/entity/Viewable.kt delete mode 100644 src/main/kotlin/routes/Article.kt delete mode 100644 src/main/kotlin/voter/ArticleVoter.kt create mode 100644 src/main/kotlin/voter/NoRuleDefinedException.kt create mode 100644 src/main/kotlin/voter/NoSubjectDefinedException.kt create mode 100644 src/main/kotlin/voter/VoterModule.kt create mode 100644 src/main/resources/sql/functions/comment/find_comment_parent_by_id.sql create mode 100644 src/main/resources/sql/functions/helpers/json_to_array.sql delete mode 100644 src/test/kotlin/ArticleTest.kt delete mode 100644 src/test/kotlin/ConstitutionTest.kt delete mode 100644 src/test/kotlin/FollowTest.kt delete mode 100644 src/test/kotlin/VoteTest.kt diff --git a/.env b/.env index 2c0ee7f..5343ea3 100644 --- a/.env +++ b/.env @@ -1,4 +1,4 @@ -NAME=dc-project +APP_NAME=dc-project DATABASE_URL=jdbc:postgresql:dc-project diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index 6f95118..03bc4ca 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -2,28 +2,10 @@