This is an automated email from the git hooks/post-receive script. New commit to branch feature/spgeed in repository pollen. See https://gitlab.nuiton.org/chorem/pollen.git commit 9e0c1612ba3a3a042f09331a5d6a42092f605416 Author: Killian <killian.herbreteau@epitech.eu> Date: Fri Oct 25 11:56:37 2019 +0200 Dao update Pollen user service --- .../Dao/PollenChildFavoriteListSpgeedDao.java | 2 +- .../persistence/Dao/PollenChoiceSpgeedDao.java | 3 +- .../persistence/Dao/PollenCommentSpgeedDao.java | 2 +- .../Dao/PollenFavoriteListMemberSpgeedDao.java | 2 +- .../Dao/PollenFavoriteListSpgeedDao.java | 2 +- .../persistence/Dao/PollenPollSpgeedDao.java | 178 ++++++++++++++------- .../persistence/Dao/PollenPrincipalSpgeedDao.java | 46 +++--- .../persistence/Dao/PollenResourceSpgeedDao.java | 32 ++++ .../persistence/Dao/PollenRessourceSpgeedDao.java | 10 -- .../Dao/PollenSessionTokenSpgeedDao.java | 2 +- .../pollen/persistence/Dao/PollenSpgeedDao.java | 10 ++ .../Dao/PollenUserCredentialSpgeedDao.java | 39 +++++ .../Dao/PollenUserEmailAddressSpgeedDao.java | 75 ++++++++- .../persistence/Dao/PollenUserSpgeedDao.java | 113 ++++++++----- .../persistence/Dao/PollenVoteSpgeedDao.java | 2 +- .../persistence/Dao/PollenVoterListSpgeedDao.java | 2 +- .../V3_3_0_2__alter_default_TopiaCreateDate.sql | 51 ++++++ 17 files changed, 422 insertions(+), 149 deletions(-) diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenChildFavoriteListSpgeedDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenChildFavoriteListSpgeedDao.java index eee526fe..7c31dfc8 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenChildFavoriteListSpgeedDao.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenChildFavoriteListSpgeedDao.java @@ -2,7 +2,7 @@ package org.chorem.pollen.persistence.Dao; import org.chorem.pollen.persistence.entity.ChildFavoriteList; -public interface PollenChildFavoriteListSpgeedDao { +public interface PollenChildFavoriteListSpgeedDao extends PollenSpgeedDao { String propertieswoForeignKey[] = {ChildFavoriteList.PROPERTY_WEIGHT, ChildFavoriteList.PROPERTY_TOPIA_ID}; diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenChoiceSpgeedDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenChoiceSpgeedDao.java index fb157bc2..be90ae16 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenChoiceSpgeedDao.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenChoiceSpgeedDao.java @@ -1,8 +1,9 @@ package org.chorem.pollen.persistence.Dao; import org.chorem.pollen.persistence.entity.Choice; +import org.nuiton.spgeed.SpgeedDao; -public interface PollenChoiceSpgeedDao { +public interface PollenChoiceSpgeedDao extends PollenSpgeedDao { String propertieswoForeignKey[] = {Choice.PROPERTY_CHOICE_VALUE, Choice.PROPERTY_DESCRIPTION, Choice.PROPERTY_CHOICE_ORDER, Choice.PROPERTY_TOPIA_ID}; } \ No newline at end of file diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenCommentSpgeedDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenCommentSpgeedDao.java index c454a982..0fc8ccde 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenCommentSpgeedDao.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenCommentSpgeedDao.java @@ -2,7 +2,7 @@ package org.chorem.pollen.persistence.Dao; import org.chorem.pollen.persistence.entity.Comment; -public interface PollenCommentSpgeedDao { +public interface PollenCommentSpgeedDao extends PollenSpgeedDao{ String propertieswoForeignKey[] = {Comment.PROPERTY_TEXT, Comment.PROPERTY_POST_DATE, Comment.PROPERTY_TOPIA_ID}; } \ No newline at end of file diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenFavoriteListMemberSpgeedDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenFavoriteListMemberSpgeedDao.java index ec8a5772..69941813 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenFavoriteListMemberSpgeedDao.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenFavoriteListMemberSpgeedDao.java @@ -3,7 +3,7 @@ package org.chorem.pollen.persistence.Dao; import org.chorem.pollen.persistence.entity.FavoriteList; import org.chorem.pollen.persistence.entity.FavoriteListMember; -public interface PollenFavoriteListMemberSpgeedDao { +public interface PollenFavoriteListMemberSpgeedDao extends PollenSpgeedDao{ String propertieswoForeignKey[] = {FavoriteListMember.PROPERTY_NAME, FavoriteListMember.PROPERTY_EMAIL, FavoriteListMember.PROPERTY_WEIGHT, FavoriteList.PROPERTY_TOPIA_ID}; diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenFavoriteListSpgeedDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenFavoriteListSpgeedDao.java index 981fd78e..2e85c139 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenFavoriteListSpgeedDao.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenFavoriteListSpgeedDao.java @@ -2,7 +2,7 @@ package org.chorem.pollen.persistence.Dao; import org.chorem.pollen.persistence.entity.FavoriteList; -public interface PollenFavoriteListSpgeedDao { +public interface PollenFavoriteListSpgeedDao extends PollenSpgeedDao{ String propertieswoForeignKey[] = {FavoriteList.PROPERTY_NAME, FavoriteList.PROPERTY_TOPIA_ID}; diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenPollSpgeedDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenPollSpgeedDao.java index 7c3e6563..2736a54e 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenPollSpgeedDao.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenPollSpgeedDao.java @@ -6,76 +6,130 @@ import org.chorem.pollen.persistence.entity.PollenPrincipal; import org.nuiton.spgeed.annotations.Select; import org.nuiton.spgeed.annotations.Update; -import java.sql.Date; - public interface PollenPollSpgeedDao extends PollenSpgeedDao { String pollName = "po"; String aggName = "polls_agg"; - String propertieswoForeignKey = pollName+"."+Poll.PROPERTY_TITLE+ ", " + pollName+"."+Poll.PROPERTY_DESCRIPTION+ ", " + pollName+"."+Poll.PROPERTY_BEGIN_DATE+ ", " + pollName+"."+Poll.PROPERTY_END_DATE+ ", " + - pollName+"."+Poll.PROPERTY_ANONYMOUS_VOTE_ALLOWED+ ", " + pollName+"."+Poll.PROPERTY_CONTINUOUS_RESULTS+ ", " + pollName+"."+Poll.PROPERTY_NOTIFY_ME_HOURS_BEFORE_POLL_ENDS+ ", " + - pollName+"."+Poll.PROPERTY_POLL_END_REMINDER_SENT+ ", " + pollName+"."+Poll.PROPERTY_NOTIFICATION_LOCALE+ ", " + pollName+"."+Poll.PROPERTY_VOTE_NOTIFICATION+ ", " + - pollName+"."+Poll.PROPERTY_FEED_CONTENT+ ", " + pollName+"."+Poll.PROPERTY_COMMENT_NOTIFICATION+ ", " + pollName+"."+Poll.PROPERTY_NEW_CHOICE_NOTIFICATION+ ", " + - pollName+"."+Poll.PROPERTY_GTU_VALIDATION_DATE+ ", " + pollName+"."+Poll.PROPERTY_PREMIUM+ ", " + pollName+"."+Poll.PROPERTY_NOTIFICATION_MAX_VOTER_SEND+ ", " + - pollName+"."+Poll.PROPERTY_EMAIL_ADDRESS_SUFFIXES+ ", " + pollName+"."+Poll.PROPERTY_POLL_TYPE+ ", " + pollName+"."+Poll.PROPERTY_VOTE_VISIBILITY+ ", " + pollName+"."+Poll.PROPERTY_COMMENT_VISIBILITY+ ", " + - pollName+"."+Poll.PROPERTY_RESULT_VISIBILITY+ ", " + pollName+"."+ Poll.PROPERTY_TOPIA_ID; - - String command = aggName+" AS (" + - " SELECT "+propertieswoForeignKey+", json_agg("+PollenPrincipalSpgeedDao.principalName+".*)->0 AS "+Poll.PROPERTY_CREATOR + - " FROM "+PollenPrincipalSpgeedDao.aggName+" "+PollenPrincipalSpgeedDao.principalName+ - " RIGHT JOIN poll "+pollName+" ON "+PollenPrincipalSpgeedDao.principalName+"."+ PollenPrincipal.PROPERTY_TOPIA_ID+" = "+pollName+"."+Poll.PROPERTY_CREATOR + - " GROUP BY "+pollName+"."+Poll.PROPERTY_TOPIA_ID + - ") "; - - String commands = "WITH " + - PollenUserEmailAddressSpgeedDao.command+"," + - PollenUserSpgeedDao.command+", " + - PollenPrincipalSpgeedDao.command+", " + - PollenPollSpgeedDao.command + - "SELECT * FROM "+aggName; - - String com = "WITH "+ - "emails_agg AS ( "+ - "SELECT topiaid, pollenuser "+ - "FROM pollenuseremailaddress "+ - "), "+ - "users_agg AS ( "+ - "SELECT userx.topiaid, json_agg(emails.*) AS emailaddresses, json_agg(demail.*)->0 AS defaultemailaddress "+ - "FROM pollenuser userx "+ - "JOIN emails_agg demail ON demail.topiaid = userx.defaultemailaddress "+ - "JOIN emails_agg emails ON emails.pollenuser = userx.topiaid "+ - "GROUP BY userx.topiaid "+ -"), "+ - "principals_agg AS ( "+ - "SELECT principals.topiaid, json_agg(userx.*)->0 AS pollenuser "+ - "FROM users_agg userx JOIN pollenprincipal principals "+ - "ON userx.topiaid = principals.pollenuser "+ - "GROUP BY principals.topiaid "+ -"), "+ - "polls_agg AS ( "+ - "SELECT p.topiaid, json_agg(a.*)->0 AS creator "+ - "FROM principals_agg a "+ - "RIGHT JOIN poll p ON a.topiaid = p.creator "+ - "GROUP BY p.topiaid "+ -") "+ - "SELECT json_agg(po.*) FROM polls_agg po"; + String properties = pollName + "." + Poll.PROPERTY_TOPIA_ID + + pollName + "." + Poll.PROPERTY_TOPIA_VERSION + ", " + + pollName + "." + Poll.PROPERTY_TOPIA_CREATE_DATE + ", " + + pollName + "." + Poll.PROPERTY_TITLE + ", " + + pollName + "." + Poll.PROPERTY_DESCRIPTION + ", " + + pollName + "." + Poll.PROPERTY_BEGIN_DATE + ", " + + pollName + "." + Poll.PROPERTY_END_DATE + ", " + + pollName + "." + Poll.PROPERTY_ANONYMOUS_VOTE_ALLOWED + ", " + + pollName + "." + Poll.PROPERTY_CONTINUOUS_RESULTS + ", " + + pollName + "." + Poll.PROPERTY_NOTIFY_ME_HOURS_BEFORE_POLL_ENDS + ", " + + pollName + "." + Poll.PROPERTY_POLL_END_REMINDER_SENT + ", " + + pollName + "." + Poll.PROPERTY_NOTIFICATION_LOCALE + ", " + + pollName + "." + Poll.PROPERTY_VOTE_NOTIFICATION + ", " + + pollName + "." + Poll.PROPERTY_POLL_TYPE + ", " + + pollName + "." + Poll.PROPERTY_VOTE_VISIBILITY + ", " + + pollName + "." + Poll.PROPERTY_COMMENT_VISIBILITY + ", " + + pollName + "." + Poll.PROPERTY_RESULT_VISIBILITY + ", " + + pollName + "." + Poll.PROPERTY_CREATOR + ", " + + pollName + "." + Poll.PROPERTY_FEED_CONTENT + ", " + + pollName + "." + Poll.PROPERTY_COMMENT_NOTIFICATION + ", " + + pollName + "." + Poll.PROPERTY_NEW_CHOICE_NOTIFICATION + ", " + + pollName + "." + Poll.PROPERTY_GTU_VALIDATION_DATE + ", " + + pollName + "." + Poll.PROPERTY_PREMIUM + ", " + + pollName + "." + Poll.PROPERTY_NOTIFICATION_MAX_VOTER_SEND + ", " + + pollName + "." + Poll.PROPERTY_EMAIL_ADDRESS_SUFFIXES; + + String command = aggName + " AS (" + + "SELECT " + properties + ", " + + "json_agg(" + PollenPrincipalSpgeedDao.principalName + ".*)->0 AS " + Poll.PROPERTY_CREATOR + + " FROM poll " + pollName + + " JOIN " + PollenPrincipalSpgeedDao.aggName + " " + PollenPrincipalSpgeedDao.principalName + " ON " + PollenPrincipalSpgeedDao.principalName + "." + PollenPrincipal.PROPERTY_TOPIA_ID + " = " + pollName + "." + Poll.PROPERTY_CREATOR + + " GROUP BY " + pollName + "." + Poll.PROPERTY_TOPIA_ID + + ")"; + + String commands = "WITH " + + PollenUserCredentialSpgeedDao.command + ", " + + PollenUserEmailAddressSpgeedDao.command + ", " + + PollenUserSpgeedDao.command + ", " + + PollenPrincipalSpgeedDao.command + ", " + + PollenPollSpgeedDao.command + + " SELECT * FROM " + aggName; @Select(sql = commands, mapper = PollenMapper.class) Poll[] getallpoll(); - @Update(sql = "insert into poll (title, description, begindate, enddate, anonymousvoteallowed, " + - "continuousresults, notifymehoursbeforepollends, pollendremindersent, " + - "notificationlocale, votenotification, feedcontent, commentnotification, " + - "newchoicenotification, gtuvalidationdate, premium, notificationmaxvotersend, " + - "emailaddresssuffixes) values ($(title), $(description), $(begindate), $(enddate), $(anonymousvoteallowed), " + - "$(continuousresults), $(notifymehoursbeforepollends), $(pollendremindersent), " + - "$(notificationlocale), $(votenotification), $(feedcontent), $(commentnotification), " + - "$(newchoicenotification), $(gtuvalidationdate), $(premium), $(notificationmaxvotersend), " + - "$(emailaddresssuffixes)))", mapper = PollenMapper.class) - int new_poll(String title, String description, Date begindate, Date enddate, boolean anonymousvoteallowed, boolean continuousresults, - int notifymehoursbeforepollends, boolean pollendremindersent, String notificationlocale, boolean votenotification, - String feedcontent, boolean commentnotification, boolean newchoicenotification, Date gtuvalidationdate, boolean premium, - boolean notificationmaxvotersend, String emailaddresssuffixes); + String pollProperties = Poll.PROPERTY_TOPIA_ID + Poll.PROPERTY_TOPIA_VERSION + ", " + + Poll.PROPERTY_TITLE + ", " + Poll.PROPERTY_DESCRIPTION + ", " + + Poll.PROPERTY_BEGIN_DATE + ", " + Poll.PROPERTY_END_DATE + ", " + + Poll.PROPERTY_ANONYMOUS_VOTE_ALLOWED + ", " + Poll.PROPERTY_CONTINUOUS_RESULTS + ", " + + Poll.PROPERTY_NOTIFY_ME_HOURS_BEFORE_POLL_ENDS + ", " + Poll.PROPERTY_POLL_END_REMINDER_SENT + ", " + + Poll.PROPERTY_NOTIFICATION_LOCALE + ", " + Poll.PROPERTY_VOTE_NOTIFICATION + ", " + + Poll.PROPERTY_POLL_TYPE + ", " + Poll.PROPERTY_VOTE_VISIBILITY + ", " + + Poll.PROPERTY_COMMENT_VISIBILITY + ", " + Poll.PROPERTY_RESULT_VISIBILITY + ", " + + Poll.PROPERTY_CREATOR + ", " + Poll.PROPERTY_FEED_CONTENT + ", " + + Poll.PROPERTY_COMMENT_NOTIFICATION + ", " + Poll.PROPERTY_NEW_CHOICE_NOTIFICATION + ", " + + Poll.PROPERTY_GTU_VALIDATION_DATE + ", " + Poll.PROPERTY_PREMIUM + ", " + + Poll.PROPERTY_NOTIFICATION_MAX_VOTER_SEND + ", " + Poll.PROPERTY_EMAIL_ADDRESS_SUFFIXES; + + String pollVariables = "${p." + Poll.PROPERTY_TOPIA_ID + "}, " + + "${p." + Poll.PROPERTY_TOPIA_VERSION + "}, " + + "${p." + Poll.PROPERTY_TITLE + "}, " + + "${p." + Poll.PROPERTY_DESCRIPTION + "}, " + + "${p." + Poll.PROPERTY_BEGIN_DATE + "}, " + + "${p." + Poll.PROPERTY_END_DATE + "}, " + + "${p." + Poll.PROPERTY_ANONYMOUS_VOTE_ALLOWED + "}, " + + "${p." + Poll.PROPERTY_CONTINUOUS_RESULTS + "}, " + + "${p." + Poll.PROPERTY_NOTIFY_ME_HOURS_BEFORE_POLL_ENDS + "}, " + + "${p." + Poll.PROPERTY_POLL_END_REMINDER_SENT + "}, " + + "${p." + Poll.PROPERTY_NOTIFICATION_LOCALE + "}, " + + "${p." + Poll.PROPERTY_VOTE_NOTIFICATION + "}, " + + "${p." + Poll.PROPERTY_POLL_TYPE + "}, " + + "${p." + Poll.PROPERTY_VOTE_VISIBILITY + "}, " + + "${p." + Poll.PROPERTY_COMMENT_VISIBILITY + "}, " + + "${p." + Poll.PROPERTY_RESULT_VISIBILITY + "}, " + + "${p." + Poll.PROPERTY_CREATOR + "." + PollenPrincipal.PROPERTY_TOPIA_ID + "}, " + + "${p." + Poll.PROPERTY_FEED_CONTENT + "}, " + + "${p." + Poll.PROPERTY_COMMENT_NOTIFICATION + "}, " + + "${p." + Poll.PROPERTY_NEW_CHOICE_NOTIFICATION + "}, " + + "${p." + Poll.PROPERTY_GTU_VALIDATION_DATE + "}, " + + "${p." + Poll.PROPERTY_PREMIUM + "}, " + + "${p." + Poll.PROPERTY_NOTIFICATION_MAX_VOTER_SEND + "}, " + + "${p." + Poll.PROPERTY_EMAIL_ADDRESS_SUFFIXES + "}"; + + String editPoll = "UPDATE SET " + + Poll.PROPERTY_TOPIA_VERSION + " = EXCLUDED." + Poll.PROPERTY_TOPIA_VERSION + ", " + + Poll.PROPERTY_TITLE + " = EXCLUDED." + Poll.PROPERTY_TITLE + ", " + + Poll.PROPERTY_DESCRIPTION + " = EXCLUDED." + Poll.PROPERTY_DESCRIPTION + ", " + + Poll.PROPERTY_BEGIN_DATE + " = EXCLUDED." + Poll.PROPERTY_BEGIN_DATE + ", " + + Poll.PROPERTY_END_DATE + " = EXCLUDED." + Poll.PROPERTY_END_DATE + ", " + + Poll.PROPERTY_ANONYMOUS_VOTE_ALLOWED + " = EXCLUDED." + Poll.PROPERTY_ANONYMOUS_VOTE_ALLOWED + ", " + + Poll.PROPERTY_CONTINUOUS_RESULTS + " = EXCLUDED." + Poll.PROPERTY_CONTINUOUS_RESULTS + ", " + + Poll.PROPERTY_NOTIFY_ME_HOURS_BEFORE_POLL_ENDS + " = EXCLUDED." + Poll.PROPERTY_NOTIFY_ME_HOURS_BEFORE_POLL_ENDS + ", " + + Poll.PROPERTY_POLL_END_REMINDER_SENT + " = EXCLUDED." + Poll.PROPERTY_POLL_END_REMINDER_SENT + ", " + + Poll.PROPERTY_NOTIFICATION_LOCALE + " = EXCLUDED." + Poll.PROPERTY_NOTIFICATION_LOCALE + ", " + + Poll.PROPERTY_VOTE_NOTIFICATION + " = EXCLUDED." + Poll.PROPERTY_VOTE_NOTIFICATION + ", " + + Poll.PROPERTY_POLL_TYPE + " = EXCLUDED." + Poll.PROPERTY_POLL_TYPE + ", " + + Poll.PROPERTY_VOTE_VISIBILITY + " = EXCLUDED." + Poll.PROPERTY_VOTE_VISIBILITY + ", " + + Poll.PROPERTY_COMMENT_VISIBILITY + " = EXCLUDED." + Poll.PROPERTY_COMMENT_VISIBILITY + ", " + + Poll.PROPERTY_RESULT_VISIBILITY + " = EXCLUDED." + Poll.PROPERTY_RESULT_VISIBILITY + ", " + + Poll.PROPERTY_CREATOR + " = EXCLUDED." + Poll.PROPERTY_CREATOR + ", " + + Poll.PROPERTY_FEED_CONTENT + " = EXCLUDED." + Poll.PROPERTY_FEED_CONTENT + ", " + + Poll.PROPERTY_COMMENT_NOTIFICATION + " = EXCLUDED." + Poll.PROPERTY_COMMENT_NOTIFICATION + ", " + + Poll.PROPERTY_NEW_CHOICE_NOTIFICATION + " = EXCLUDED." + Poll.PROPERTY_NEW_CHOICE_NOTIFICATION + ", " + + Poll.PROPERTY_GTU_VALIDATION_DATE + " = EXCLUDED." + Poll.PROPERTY_GTU_VALIDATION_DATE + ", " + + Poll.PROPERTY_PREMIUM + " = EXCLUDED." + Poll.PROPERTY_PREMIUM + ", " + + Poll.PROPERTY_NOTIFICATION_MAX_VOTER_SEND + " = EXCLUDED." + Poll.PROPERTY_NOTIFICATION_MAX_VOTER_SEND + ", " + + Poll.PROPERTY_EMAIL_ADDRESS_SUFFIXES + " = EXCLUDED." + Poll.PROPERTY_EMAIL_ADDRESS_SUFFIXES; + + String createPoll = "INSERT INTO poll (" + pollProperties + ") VALUES (" + pollVariables + ")"; + + String savePoll = createPoll + " ON CONFLICT (" + Poll.PROPERTY_TOPIA_ID + ") DO " + editPoll; + + @Update(sql = savePoll, mapper = PollenMapper.class) + int savePoll(Poll p); + + String deletePoll = "DELETE FROM poll" + + " WHERE " + Poll.PROPERTY_TOPIA_ID + " = ${u.topiaId}"; + + @Update(sql = deletePoll, mapper = PollenMapper.class) + int deletePoll(Poll p); } \ No newline at end of file diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenPrincipalSpgeedDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenPrincipalSpgeedDao.java index 123bff7a..f84f10bd 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenPrincipalSpgeedDao.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenPrincipalSpgeedDao.java @@ -1,9 +1,10 @@ package org.chorem.pollen.persistence.Dao; +import org.chorem.pollen.persistence.entity.Poll; import org.chorem.pollen.persistence.entity.PollenPrincipal; import org.chorem.pollen.persistence.entity.PollenUser; -public interface PollenPrincipalSpgeedDao { +public interface PollenPrincipalSpgeedDao extends PollenSpgeedDao{ String principalName = "pr"; @@ -11,31 +12,20 @@ public interface PollenPrincipalSpgeedDao { String propertieswoForeignKey = principalName+"." +PollenPrincipal.PROPERTY_NAME + ", " + principalName+"." +PollenPrincipal.PROPERTY_EMAIL + ", "+principalName+"."+PollenPrincipal.PROPERTY_INVALID + ", " - + principalName+"." +PollenPrincipal.TOPIA_ID; - - String Properties = propertieswoForeignKey+ PollenPrincipal.PROPERTY_PERMISSION+ PollenPrincipal.PROPERTY_POLLEN_USER; - - String command = aggName+" AS (" + - " SELECT "+ propertieswoForeignKey +", json_agg("+PollenUserSpgeedDao.userName+".*)->0 AS "+PollenPrincipal.PROPERTY_POLLEN_USER+ - " FROM "+PollenUserSpgeedDao.aggName+" "+PollenUserSpgeedDao.userName+ - " JOIN pollenprincipal "+principalName+" ON "+PollenUserSpgeedDao.userName+"."+ PollenUser.PROPERTY_TOPIA_ID+" = "+principalName+"."+PollenPrincipal.PROPERTY_POLLEN_USER+ - " GROUP BY "+ principalName+"."+PollenPrincipal.PROPERTY_TOPIA_ID+ - ")"; - - String commands = "WITH " + - PollenUserEmailAddressSpgeedDao.command+", " + - "users_agg AS (" + - " SELECT userx.topiaid, json_agg(demail.*)->0 AS defaultemailaddress, json_agg(emails.*) AS emailaddresses" + - " FROM email_agg demail, email_agg emails, pollenuser userx" + - " WHERE demail.topiaid = userx.defaultemailaddress AND emails.pollenuser = userx.topiaid" + - " GROUP BY userx.topiaid" + - ")," + - PollenPrincipalSpgeedDao.command+", " + - "polls_agg AS (" + - " SELECT p.topiaid, json_agg(a.*)->0 AS creator" + - " FROM principals_agg a, poll p" + - " WHERE a.topiaid = p.creator" + - " GROUP BY p.topiaid" + - ") " + - "SELECT * FROM polls_agg"; + + principalName+"." +PollenPrincipal.PROPERTY_TOPIA_ID; + + String command = aggName + " AS (" + + "SELECT " + propertieswoForeignKey + ", " + + "json_agg(" + PollenUserSpgeedDao.userName + ".*)->0 AS " + PollenPrincipal.PROPERTY_POLLEN_USER + + " FROM " + PollenUserSpgeedDao.aggName + " " + PollenUserSpgeedDao.userName + + " JOIN pollenprincipal " + principalName + " ON " + PollenUserSpgeedDao.userName + "." + PollenUser.PROPERTY_TOPIA_ID + " = " + principalName + "." + PollenPrincipal.PROPERTY_POLLEN_USER + + " GROUP BY " + principalName + "." + PollenPrincipal.PROPERTY_TOPIA_ID + + ")"; + + String commands = "WITH " + + PollenUserCredentialSpgeedDao.command + ", " + + PollenUserEmailAddressSpgeedDao.command + ", " + + PollenUserSpgeedDao.command + ", " + + PollenPrincipalSpgeedDao.command + + "SELECT * FROM " + aggName; } \ No newline at end of file diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenResourceSpgeedDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenResourceSpgeedDao.java new file mode 100644 index 00000000..5e530659 --- /dev/null +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenResourceSpgeedDao.java @@ -0,0 +1,32 @@ +package org.chorem.pollen.persistence.Dao; + +import org.chorem.pollen.persistence.PollenMapper; +import org.chorem.pollen.persistence.entity.PollenResource; +import org.nuiton.spgeed.annotations.Update; + +public interface PollenResourceSpgeedDao extends PollenSpgeedDao { + + String resourceName = "uc"; + + String aggName = "ressource_agg"; + + String properties = PollenResource.PROPERTY_TOPIA_ID + ", " + + PollenResource.PROPERTY_TOPIA_VERSION + ", " + + PollenResource.PROPERTY_TOPIA_CREATE_DATE + ", " + + PollenResource.PROPERTY_RESOURCE_CONTENT + ", " + + PollenResource.PROPERTY_CONTENT_TYPE + ", " + + PollenResource.PROPERTY_NAME + ", " + + PollenResource.PROPERTY_SIZE + ", " + + PollenResource.PROPERTY_RESOURCE_TYPE; + + String command = aggName + " AS (" + + " SELECT " + properties + + " FROM pollenresource" + + ")"; + + String deleteResource = "DELETE FROM pollenresource " + + "WHERE " + PollenResource.PROPERTY_TOPIA_ID + " ${topiaId}"; + + @Update(sql = deleteResource, mapper = PollenMapper.class) + int deleteResource(String topiaId); +} \ No newline at end of file diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenRessourceSpgeedDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenRessourceSpgeedDao.java deleted file mode 100644 index 44399f15..00000000 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenRessourceSpgeedDao.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.chorem.pollen.persistence.Dao; - -import org.chorem.pollen.persistence.entity.PollenResource; - -public interface PollenRessourceSpgeedDao { - - String propertieswoForeignKey[] = {PollenResource.PROPERTY_RESOURCE_CONTENT, PollenResource.PROPERTY_CONTENT_TYPE, - PollenResource.PROPERTY_NAME, PollenResource.PROPERTY_SIZE, PollenResource.PROPERTY_TOPIA_ID}; - -} \ No newline at end of file diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenSessionTokenSpgeedDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenSessionTokenSpgeedDao.java index 0123fc22..6c15f8e9 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenSessionTokenSpgeedDao.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenSessionTokenSpgeedDao.java @@ -2,7 +2,7 @@ package org.chorem.pollen.persistence.Dao; import org.chorem.pollen.persistence.entity.SessionToken; -public interface PollenSessionTokenSpgeedDao { +public interface PollenSessionTokenSpgeedDao extends PollenSpgeedDao { String propertieswoForeignKey[] = {SessionToken.PROPERTY_TOPIA_ID}; diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenSpgeedDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenSpgeedDao.java index 1ad613bd..f6da0612 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenSpgeedDao.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenSpgeedDao.java @@ -1,5 +1,15 @@ package org.chorem.pollen.persistence.Dao; +import org.chorem.pollen.persistence.entity.PollenUser; + +import static org.nuiton.topia.persistence.TopiaEntity.*; + public interface PollenSpgeedDao { + String createTopiaEntityProperties = "( " + PROPERTY_TOPIA_ID + ", " + PROPERTY_TOPIA_VERSION + ", " + + PROPERTY_TOPIA_CREATE_DATE + " )"; + + String createTopiaEntityVariables = "(${" + PROPERTY_TOPIA_ID + "}, ${" + PROPERTY_TOPIA_VERSION + "}, " + + "${" + PROPERTY_TOPIA_CREATE_DATE + "})"; + } \ No newline at end of file diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenUserCredentialSpgeedDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenUserCredentialSpgeedDao.java new file mode 100644 index 00000000..f4385c76 --- /dev/null +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenUserCredentialSpgeedDao.java @@ -0,0 +1,39 @@ +package org.chorem.pollen.persistence.Dao; + +import org.chorem.pollen.persistence.PollenMapper; +import org.chorem.pollen.persistence.entity.UserCredential; +import org.nuiton.spgeed.annotations.Select; +import org.nuiton.spgeed.annotations.Update; + +import java.util.List; + +public interface PollenUserCredentialSpgeedDao extends PollenSpgeedDao { + + String userCredentialName = "uc"; + + String aggName = "credientials_agg"; + + String properties = UserCredential.PROPERTY_TOPIA_ID + ", " + + UserCredential.PROPERTY_TOPIA_VERSION + ", " + + UserCredential.PROPERTY_TOPIA_CREATE_DATE + ", " + + UserCredential.PROPERTY_PROVIDER + ", " + + UserCredential.PROPERTY_USER_ID + ", " + + UserCredential.PROPERTY_USER_NAME + ", " + + UserCredential.PROPERTY_EMAIL + ", " + + "pollenuser"; + + String command = aggName + " AS (" + + " SELECT " + properties + + " FROM usercredential" + + ")"; + + String deleteUserCredential = "DELETE FROM usercredential " + + "WHERE " + UserCredential.PROPERTY_TOPIA_ID + " = ${topiaId}"; + + @Update(sql = deleteUserCredential, mapper = PollenMapper.class) + int deleteUserCredential(List<String> topiaId); + + String getUserCredential = "SELECT * FROM usercredential WHERE " + UserCredential.PROPERTY_USER_ID + " = ${topiaId}"; + @Select(sql = getUserCredential, mapper = PollenMapper.class) + UserCredential[] getUserCredential(String topiaId); +} \ No newline at end of file diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenUserEmailAddressSpgeedDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenUserEmailAddressSpgeedDao.java index d72d41fa..9e68eae5 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenUserEmailAddressSpgeedDao.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenUserEmailAddressSpgeedDao.java @@ -1,8 +1,15 @@ package org.chorem.pollen.persistence.Dao; +import org.chorem.pollen.persistence.PollenMapper; +import org.chorem.pollen.persistence.entity.PollenUser; import org.chorem.pollen.persistence.entity.PollenUserEmailAddress; +import org.nuiton.spgeed.annotations.Select; +import org.nuiton.spgeed.annotations.Update; -public interface PollenUserEmailAddressSpgeedDao { +import java.util.Collection; +import java.util.List; + +public interface PollenUserEmailAddressSpgeedDao extends PollenSpgeedDao { String demailName = "pde"; @@ -13,12 +20,72 @@ public interface PollenUserEmailAddressSpgeedDao { String properties = PollenUserEmailAddress.PROPERTY_EMAIL_ADDRESS + ", " + PollenUserEmailAddress.PROPERTY_PGP_PUBLIC_KEY + ", " + PollenUserEmailAddress.PROPERTY_VALIDATED + ", " + - PollenUserEmailAddress.TOPIA_ID + ", " + + PollenUserEmailAddress.PROPERTY_TOPIA_ID + ", " + "pollenuser"; - - final String command = aggName+" AS (" + + String command = aggName+" AS (" + " SELECT " + properties + " FROM pollenuseremailaddress" + ")"; + + String findEmail = "WITH " + command + " SELECT * FROM " + aggName + + " WHERE " + PollenUserEmailAddress.PROPERTY_EMAIL_ADDRESS + " = ${emailAddress}"; + + @Select(sql = findEmail, mapper = PollenMapper.class) + PollenUserEmailAddress findEmailAddress(String emailAddress); + + String getEmail = "WITH " + command + " SELECT * FROM " + aggName + + " WHERE " + PollenUserEmailAddress.PROPERTY_TOPIA_ID + " = ${topiaId}"; + + @Select(sql = getEmail, mapper = PollenMapper.class) + PollenUserEmailAddress getEmailAddress(String topiaId); + + String emailProperties = PollenUserEmailAddress.PROPERTY_TOPIA_ID + ", " + + PollenUserEmailAddress.PROPERTY_TOPIA_VERSION + ", " + + PollenUserEmailAddress.PROPERTY_EMAIL_ADDRESS + ", " + + PollenUserEmailAddress.PROPERTY_PGP_PUBLIC_KEY + ", " + + PollenUserEmailAddress.PROPERTY_VALIDATED; + + String emailPropertiesForeign = emailProperties + ", pollenuser"; + + String emailVariable = "${e.topiaId}, ${e.topiaVersion}, ${e.emailAddress}, ${e.pgpPublicKey}, ${e.validated}"; + + String emailVariableForeign = emailVariable + ", ${pollenuser}"; + + String createEmail = "INSERT INTO pollenuseremailaddress (" + emailProperties + ") " + + "VALUES (" + emailVariable + ")"; + + String createEmailForeign = "INSERT INTO pollenuseremailaddress (" + emailPropertiesForeign + ") " + + "VALUES (" + emailVariableForeign + ")"; + + String editEmail = "UPDATE SET " + + PollenUserEmailAddress.PROPERTY_EMAIL_ADDRESS + " = EXCLUDED." + PollenUserEmailAddress.PROPERTY_EMAIL_ADDRESS + ", " + + PollenUserEmailAddress.PROPERTY_PGP_PUBLIC_KEY + " = EXCLUDED." + PollenUserEmailAddress.PROPERTY_PGP_PUBLIC_KEY + ", " + + PollenUserEmailAddress.PROPERTY_VALIDATED + " = EXCLUDED." + PollenUserEmailAddress.PROPERTY_VALIDATED; + + String editEmailForeign = editEmail + ", pollenuser = EXCLUDED.pollenuser"; + + String saveEmail = createEmail + + " ON CONFLICT (" + PollenUserEmailAddress.PROPERTY_TOPIA_ID + ") DO " + editEmail; + + String saveEmailForeign = createEmailForeign + + " ON CONFLICT (" + PollenUserEmailAddress.PROPERTY_TOPIA_ID + ") DO " + editEmailForeign; + + @Update(sql = saveEmail, mapper = PollenMapper.class) + int saveEmail(PollenUserEmailAddress e); + + @Update(sql = saveEmailForeign, mapper = PollenMapper.class) + int saveEmail(PollenUserEmailAddress e, String pollenuser); + + String updatePollenUser = "UPDATE pollenuseremailaddress SET pollenuser = ${pollenUser} WHERE " + + PollenUserEmailAddress.PROPERTY_TOPIA_ID + " = ${topiaId}"; + + @Update(sql = updatePollenUser, mapper = PollenMapper.class) + int updatePollenUser(String pollenUser, Collection<String> topiaId); + + String deleteEmail = "DELETE FROM pollenuseremailaddress" + + " WHERE " + PollenUserEmailAddress.PROPERTY_TOPIA_ID + " = ${topiaId}"; + + @Update(sql = deleteEmail, mapper = PollenMapper.class) + int deleteEmail(String topiaId); } \ No newline at end of file diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenUserSpgeedDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenUserSpgeedDao.java index 3e7f9605..a3968e7b 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenUserSpgeedDao.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenUserSpgeedDao.java @@ -4,7 +4,11 @@ import org.chorem.pollen.persistence.PollenMapper; import org.chorem.pollen.persistence.entity.Poll; import org.chorem.pollen.persistence.entity.PollenUser; import org.chorem.pollen.persistence.entity.PollenUserEmailAddress; +import org.nuiton.spgeed.Chunk; import org.nuiton.spgeed.annotations.Select; +import org.nuiton.spgeed.annotations.Update; + +import static org.chorem.pollen.persistence.Dao.PollenUserEmailAddressSpgeedDao.*; public interface PollenUserSpgeedDao extends PollenSpgeedDao { @@ -12,50 +16,85 @@ public interface PollenUserSpgeedDao extends PollenSpgeedDao { String aggName = "users_agg"; - String propertieswoForeignKey = userName+"."+PollenUser.PROPERTY_NAME+", " + - userName+"."+PollenUser.PROPERTY_ADMINISTRATOR + ", "+userName+"."+PollenUser.PROPERTY_LANGUAGE+", " + - userName+"."+PollenUser.PROPERTY_PASSWORD + ", "+userName+"."+PollenUser.PROPERTY_SALT+", " + - userName+"."+PollenUser.PROPERTY_BANNED + ", "+userName+"."+PollenUser.PROPERTY_GTU_VALIDATION_DATE+", " + - userName+"."+PollenUser.PROPERTY_PREMIUM_TO + ", "+userName+"."+PollenUser.PROPERTY_CAN_CREATE_POLL+", " + - userName+"."+PollenUser.PROPERTY_TOPIA_ID; - - String Properties = propertieswoForeignKey+ PollenUser.PROPERTY_USER_CREDENTIAL+ PollenUser.PROPERTY_DEFAULT_EMAIL_ADDRESS+ - PollenUser.PROPERTY_EMAIL_ADDRESSES+ PollenUser.PROPERTY_AVATAR; - - String command = aggName+" AS (" + - " SELECT "+propertieswoForeignKey+", " + - "json_agg("+PollenUserEmailAddressSpgeedDao.demailName+".*)->0 AS "+PollenUser.PROPERTY_DEFAULT_EMAIL_ADDRESS+", " + - "json_agg("+PollenUserEmailAddressSpgeedDao.emailsName+".*) AS "+PollenUser.PROPERTY_EMAIL_ADDRESSES+ - " FROM pollenuser "+userName+ - " JOIN "+PollenUserEmailAddressSpgeedDao.aggName+" "+PollenUserEmailAddressSpgeedDao.demailName+" ON "+PollenUserEmailAddressSpgeedDao.demailName+"."+PollenUserEmailAddress.PROPERTY_TOPIA_ID+ " = "+userName+"."+PollenUser.PROPERTY_DEFAULT_EMAIL_ADDRESS+ - " JOIN "+PollenUserEmailAddressSpgeedDao.aggName+" "+PollenUserEmailAddressSpgeedDao.emailsName+" ON "+PollenUserEmailAddressSpgeedDao.emailsName+".pollenuser = "+userName+"."+PollenUser.PROPERTY_TOPIA_ID+ - " GROUP BY "+userName+"."+PollenUser.PROPERTY_TOPIA_ID+ - ")"; + String propertieswoForeignKey = userName + "." + PollenUser.PROPERTY_NAME + ", " + + userName + "." + PollenUser.PROPERTY_ADMINISTRATOR + ", "+userName + "." + PollenUser.PROPERTY_LANGUAGE + ", " + + userName + "." + PollenUser.PROPERTY_PASSWORD + ", "+userName + "." + PollenUser.PROPERTY_SALT + ", " + + userName + "." + PollenUser.PROPERTY_BANNED + ", "+userName + "." + PollenUser.PROPERTY_GTU_VALIDATION_DATE + ", " + + userName + "." + PollenUser.PROPERTY_PREMIUM_TO + ", "+userName + "." + PollenUser.PROPERTY_CAN_CREATE_POLL + ", " + + userName + "." + PollenUser.PROPERTY_TOPIA_ID + ", " + userName + "." + PollenUser.PROPERTY_TOPIA_CREATE_DATE;; + + String command = aggName + " AS (" + + "SELECT " + propertieswoForeignKey + ", " + + "json_agg(" + demailName + ".*)->0 AS " + PollenUser.PROPERTY_DEFAULT_EMAIL_ADDRESS + ", " + + "json_agg(" + emailsName + ".*) AS " + PollenUser.PROPERTY_EMAIL_ADDRESSES + ", " + + "json_agg(" + PollenUserCredentialSpgeedDao.userCredentialName + ".*) AS " + PollenUser.PROPERTY_USER_CREDENTIAL + + " FROM pollenuser " + userName + + " JOIN " + PollenUserEmailAddressSpgeedDao.aggName + " " + demailName + " ON " + demailName + "." + PollenUserEmailAddress.PROPERTY_TOPIA_ID + " = " + userName + "." + PollenUser.PROPERTY_DEFAULT_EMAIL_ADDRESS + + " LEFT OUTER JOIN " + PollenUserEmailAddressSpgeedDao.aggName + " " + PollenUserEmailAddressSpgeedDao.emailsName + " ON " + PollenUserEmailAddressSpgeedDao.emailsName + ".pollenuser = " + userName + "." + PollenUser.PROPERTY_TOPIA_ID + + " LEFT OUTER JOIN " + PollenUserCredentialSpgeedDao.aggName + " " + PollenUserCredentialSpgeedDao.userCredentialName + " ON " + PollenUserCredentialSpgeedDao.userCredentialName + ".pollenuser = " + userName + "." + PollenUser.PROPERTY_TOPIA_ID + + " GROUP BY " + userName + "." + PollenUser.PROPERTY_TOPIA_ID + + ")"; String commands = "WITH " + - PollenUserEmailAddressSpgeedDao.command+", "+ + PollenUserCredentialSpgeedDao.command + ", " + + PollenUserEmailAddressSpgeedDao.command + ", " + PollenUserSpgeedDao.command + - "SELECT * from "+aggName; - - String getuser = "with pollenu as " + - "((select json_agg(e) as emailaddresses from pollenuseremailaddress e where e.pollenuser = u.topiaid), " + - "(select json_agg(d)->0 as defaultemailaddress from pollenuseremailaddress d where d.pollenuser = u.defaultemailaddress)," + - "select u.* " + - " from pollenuser u)" + - " select json_agg(pu) from pollenu pu"; + " SELECT * from " + aggName; - @Select(sql = getuser, mapper = PollenMapper.class) - PollenUser getFirstUser(); + String getUser = commands + " " + userName + " WHERE " + + userName + "." + PollenUser.PROPERTY_TOPIA_ID + " = ${userId}"; - @Select(sql = commands + " "+userName+" WHERE "+userName+"."+ PollenUser.PROPERTY_TOPIA_ID+" = ${userId}", mapper = PollenMapper.class) + @Select(sql = getUser, mapper = PollenMapper.class) PollenUser getUser(String userId); - @Select(sql = getuser, mapper = PollenMapper.class) - PollenUser[] getallUser(); + String getAllUsers = commands + " ORDER BY ${userOrder | toString()}"; + + @Select(sql = getAllUsers, mapper = PollenMapper.class) + Chunk<PollenUser> getAllUsers(Chunk previousChunk, String userOrder); + + String userProperties = PollenUser.PROPERTY_TOPIA_ID + ", " + PollenUser.PROPERTY_TOPIA_VERSION + ", " + + PollenUser.PROPERTY_NAME + ", " + PollenUser.PROPERTY_ADMINISTRATOR + ", " + + PollenUser.PROPERTY_LANGUAGE + ", " + PollenUser.PROPERTY_PASSWORD + ", " + + PollenUser.PROPERTY_SALT + ", " + PollenUser.PROPERTY_BANNED + ", " + + PollenUser.PROPERTY_GTU_VALIDATION_DATE + ", " + PollenUser.PROPERTY_PREMIUM_TO + ", " + + PollenUser.PROPERTY_CAN_CREATE_POLL + ", " + PollenUser.PROPERTY_DEFAULT_EMAIL_ADDRESS; + + String userVariables = "${u." + PollenUser.PROPERTY_TOPIA_ID + "}, " + + "${u." + PollenUser.PROPERTY_TOPIA_VERSION + "}, " + + "${u." + PollenUser.PROPERTY_NAME + "}, " + + "${u." + PollenUser.PROPERTY_ADMINISTRATOR + "}, " + + "${u." + PollenUser.PROPERTY_LANGUAGE + "}, " + + "${u." + PollenUser.PROPERTY_PASSWORD + "}, " + + "${u." + PollenUser.PROPERTY_SALT + "}, " + + "${u." + PollenUser.PROPERTY_BANNED + "}, " + + "${u." + PollenUser.PROPERTY_GTU_VALIDATION_DATE + "}, " + + "${u." + PollenUser.PROPERTY_PREMIUM_TO + "}, " + + "${u." + PollenUser.PROPERTY_CAN_CREATE_POLL + "}, " + + "${u." + PollenUser.PROPERTY_DEFAULT_EMAIL_ADDRESS + " " + PollenUserEmailAddress.PROPERTY_TOPIA_ID + "}"; + + String editUser = "UPDATE SET " + + PollenUser.PROPERTY_TOPIA_VERSION + " = EXCLUDED." + PollenUser.PROPERTY_TOPIA_VERSION + ", " + + PollenUser.PROPERTY_NAME + " = EXCLUDED." + PollenUser.PROPERTY_NAME + ", " + + PollenUser.PROPERTY_ADMINISTRATOR + " = EXCLUDED." + PollenUser.PROPERTY_ADMINISTRATOR + ", " + + PollenUser.PROPERTY_LANGUAGE + " = EXCLUDED." + PollenUser.PROPERTY_LANGUAGE + ", " + + PollenUser.PROPERTY_PASSWORD + " = EXCLUDED." + PollenUser.PROPERTY_PASSWORD + ", " + + PollenUser.PROPERTY_SALT + " = EXCLUDED." + PollenUser.PROPERTY_SALT + ", " + + PollenUser.PROPERTY_BANNED + " = EXCLUDED." + PollenUser.PROPERTY_BANNED + ", " + + PollenUser.PROPERTY_GTU_VALIDATION_DATE + " = EXCLUDED." + PollenUser.PROPERTY_GTU_VALIDATION_DATE + ", " + + PollenUser.PROPERTY_PREMIUM_TO + " = EXCLUDED." + PollenUser.PROPERTY_PREMIUM_TO + ", " + + PollenUser.PROPERTY_CAN_CREATE_POLL + " = EXCLUDED." + PollenUser.PROPERTY_CAN_CREATE_POLL + ", " + + PollenUser.PROPERTY_DEFAULT_EMAIL_ADDRESS + " = EXCLUDED." + PollenUser.PROPERTY_DEFAULT_EMAIL_ADDRESS; + + String createUser = "INSERT INTO pollenuser (" + userProperties + ") VALUES (" + userVariables + ")"; + + String saveUser = createUser + " ON CONFLICT (" + PollenUser.PROPERTY_TOPIA_ID + ") DO " + editUser; + + @Update(sql = saveUser, mapper = PollenMapper.class) + int saveUser(PollenUser u); - @Select(sql = "select json_agg(m.*) from pollenuseremailaddress m", mapper = PollenMapper.class) - PollenUserEmailAddress getUserEmail(); + String deleteUser = "DELETE FROM pollenuser" + + " WHERE " + PollenUser.PROPERTY_TOPIA_ID + " = ${u.topiaId}"; - @Select(sql = "SELECT count(*) FROM PollenUser", mapper = PollenMapper.class) - int getUserCount(); + @Update(sql = deleteUser, mapper = PollenMapper.class) + int deleteUser(PollenUser u); } \ No newline at end of file diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenVoteSpgeedDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenVoteSpgeedDao.java index c030ea01..f0554542 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenVoteSpgeedDao.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenVoteSpgeedDao.java @@ -2,7 +2,7 @@ package org.chorem.pollen.persistence.Dao; import org.chorem.pollen.persistence.entity.Vote; -public interface PollenVoteSpgeedDao { +public interface PollenVoteSpgeedDao extends PollenSpgeedDao { String propertieswoForeignKey[] = {Vote.PROPERTY_WEIGHT, Vote.PROPERTY_ANONYMOUS, Vote.PROPERTY_TOPIA_ID}; } \ No newline at end of file diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenVoterListSpgeedDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenVoterListSpgeedDao.java index 38796255..402ceeb6 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenVoterListSpgeedDao.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenVoterListSpgeedDao.java @@ -2,7 +2,7 @@ package org.chorem.pollen.persistence.Dao; import org.chorem.pollen.persistence.entity.VoterList; -public interface PollenVoterListSpgeedDao { +public interface PollenVoterListSpgeedDao extends PollenSpgeedDao { String propertieswoForeignKey[] = {VoterList.PROPERTY_NAME, VoterList.PROPERTY_WEIGHT, VoterList.PROPERTY_TOPIA_ID}; diff --git a/pollen-persistence/src/main/resources/db/migration/postgresql/V3_3_0_2__alter_default_TopiaCreateDate.sql b/pollen-persistence/src/main/resources/db/migration/postgresql/V3_3_0_2__alter_default_TopiaCreateDate.sql new file mode 100644 index 00000000..8e657c47 --- /dev/null +++ b/pollen-persistence/src/main/resources/db/migration/postgresql/V3_3_0_2__alter_default_TopiaCreateDate.sql @@ -0,0 +1,51 @@ +-- +-- Alter default topiaCreateDate +-- + +ALTER TABLE childfavoritelist ALTER COLUMN topiacreatedate SET DEFAULT NOW(); + +ALTER TABLE choice ALTER COLUMN topiacreatedate SET DEFAULT NOW(); + +ALTER TABLE comment ALTER COLUMN topiacreatedate SET DEFAULT NOW(); + +ALTER TABLE emailtoresend ALTER COLUMN topiacreatedate SET DEFAULT NOW(); + +ALTER TABLE favoritelist ALTER COLUMN topiacreatedate SET DEFAULT NOW(); + +ALTER TABLE favoritelistmember ALTER COLUMN topiacreatedate SET DEFAULT NOW(); + +ALTER TABLE flyway_schema_history ALTER COLUMN topiacreatedate SET DEFAULT NOW(); + +ALTER TABLE loginprovider ALTER COLUMN topiacreatedate SET DEFAULT NOW(); + +ALTER TABLE poll ALTER COLUMN topiacreatedate SET DEFAULT NOW(); + +ALTER TABLE pollenprincipal ALTER COLUMN topiacreatedate SET DEFAULT NOW(); + +ALTER TABLE pollenresource ALTER COLUMN topiacreatedate SET DEFAULT NOW(); + +ALTER TABLE pollentoken ALTER COLUMN topiacreatedate SET DEFAULT NOW(); + +ALTER TABLE pollenuser ALTER COLUMN topiacreatedate SET DEFAULT NOW(); + +ALTER TABLE pollenuseremailaddress ALTER COLUMN topiacreatedate SET DEFAULT NOW(); + +ALTER TABLE question ALTER COLUMN topiacreatedate SET DEFAULT NOW(); + +ALTER TABLE report ALTER COLUMN topiacreatedate SET DEFAULT NOW(); + +ALTER TABLE schema_version ALTER COLUMN topiacreatedate SET DEFAULT NOW(); + +ALTER TABLE sessiontoken ALTER COLUMN topiacreatedate SET DEFAULT NOW(); + +ALTER TABLE usercredential ALTER COLUMN topiacreatedate SET DEFAULT NOW(); + +ALTER TABLE vote ALTER COLUMN topiacreatedate SET DEFAULT NOW(); + +ALTER TABLE voter ALTER COLUMN topiacreatedate SET DEFAULT NOW(); + +ALTER TABLE voterlist ALTER COLUMN topiacreatedate SET DEFAULT NOW(); + +ALTER TABLE voterlistmember ALTER COLUMN topiacreatedate SET DEFAULT NOW(); + +ALTER TABLE votetochoice ALTER COLUMN topiacreatedate SET DEFAULT NOW(); -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.