From 81fe2bd81f28bd2d7ba167da5836c487eddcf5ed Mon Sep 17 00:00:00 2001 From: Eraxyso <130852025+Eraxyso@users.noreply.github.com> Date: Thu, 23 Jan 2025 06:22:35 +0000 Subject: [PATCH] feat: update database schema and openapi for targets and admins --- docs/db_schema.md | 36 ++++++++++ docs/swagger/swagger.yaml | 51 ++++++++++++-- openapi/spec.go | 139 +++++++++++++++++++------------------- openapi/types.go | 75 +++++++++++++++----- 4 files changed, 207 insertions(+), 94 deletions(-) diff --git a/docs/db_schema.md b/docs/db_schema.md index 7d1f4523..71656f37 100644 --- a/docs/db_schema.md +++ b/docs/db_schema.md @@ -9,6 +9,24 @@ | questionnaire_id | int(11) | NO | PRI | _NULL_ | | user_traqid | char(32) | NO | PRI | _NULL_ | +### administrator_groups + +アンケートの運営 (編集等ができるグループ)(実際の管理はadministratorsで行い、これは前回選択した内容を提示するためのみに使用される) + +| Field | Type | Null | Key | Default | Extra | 説明など | +| ---------------- | -------- | ---- | --- | ------- | ----- | -------- | +| questionnaire_id | int(11) | NO | PRI | _NULL_ | +| group_id | char(36) | NO | PRI | _NULL_ | + +### administrator_users + +アンケートの運営 (編集等ができるユーザー)(実際の管理はadministratorsで行い、これは前回選択した内容を提示するためのみに使用される) + +| Field | Type | Null | Key | Default | Extra | 説明など | +| ---------------- | -------- | ---- | --- | ------- | ----- | -------- | +| questionnaire_id | int(11) | NO | PRI | _NULL_ | +| user_traqid | char(32) | NO | PRI | _NULL_ | + ### options 選択肢 @@ -110,3 +128,21 @@ | questionnaire_id | int(11) | NO | PRI | _NULL_ | | user_traqid | char(32) | NO | PRI | _NULL_ | | is_canceled | boolean | NO | | false | | アンケートの対象者がキャンセルしたかどうか | + +### target_groups + +選択したアンケートの対象者(グループ)(実際の管理はtargetsで行い、これは前回選択した内容を提示するためのみに使用される) + +| Field | Type | Null | Key | Default | Extra | 説明など | +| ---------------- | -------- | ---- | --- | ------- | ----- | -------- | +| questionnaire_id | int(11) | NO | PRI | _NULL_ | +| group_id | char(36) | NO | PRI | _NULL_ | + +### target_groups + +選択したアンケートの対象者(ユーザー)(実際の管理はtargetsで行い、これは前回選択した内容を提示するためのみに使用される) + +| Field | Type | Null | Key | Default | Extra | 説明など | +| ---------------- | -------- | ---- | --- | ------- | ----- | -------- | +| questionnaire_id | int(11) | NO | PRI | _NULL_ | +| user_traqid | char(32) | NO | PRI | _NULL_ | diff --git a/docs/swagger/swagger.yaml b/docs/swagger/swagger.yaml index b14e2474..7131642d 100644 --- a/docs/swagger/swagger.yaml +++ b/docs/swagger/swagger.yaml @@ -99,7 +99,7 @@ paths: # TODO 変数の命名を確認する content: application/json: schema: - $ref: "#/components/schemas/QuestionnaireDetail" + $ref: "#/components/schemas/EditQuestionnaire" responses: "200": description: 正常にアンケートを変更できました。 @@ -428,10 +428,10 @@ components: - $ref: "#/components/schemas/QuestionnaireIsAnonymous" - $ref: "#/components/schemas/QuestionnaireIsDuplicateAnswerAllowed" - $ref: "#/components/schemas/QuestionnaireIsPublished" - - $ref: "#/components/schemas/QuestionnaireTargetsAndAdmins" NewQuestionnaire: allOf: - $ref: "#/components/schemas/QuestionnaireBase" + - $ref: "#/components/schemas/QuestionnaireTargetsAndAdmins" - properties: questions: type: array @@ -439,18 +439,44 @@ components: $ref: "#/components/schemas/NewQuestion" required: - questions + - targets + - admins + EditQuestionnaire: + allOf: + - $ref: "#/components/schemas/QuestionnaireID" + - $ref: "#/components/schemas/QuestionnaireBase" + - $ref: "#/components/schemas/EditQuestionnaireTargetsAndAdmins" + - properties: + questions: + type: array + items: + $ref: "#/components/schemas/Question" + required: + - questions QuestionnaireDetail: allOf: - $ref: "#/components/schemas/QuestionnaireID" - $ref: "#/components/schemas/QuestionnaireBase" - $ref: "#/components/schemas/QuestionnaireCreatedAt" - $ref: "#/components/schemas/QuestionnaireModifiedAt" - - $ref: "#/components/schemas/Users" + - $ref: "#/components/schemas/QuestionnaireTargetsAndAdmins" - properties: questions: type: array items: $ref: "#/components/schemas/Question" + respondents: + $ref: "#/components/schemas/Users" + description: | + 回答者の一覧。匿名回答の場合はnull。 + targets: + $ref: "#/components/schemas/Users" + description: | + 対象者の一覧。 + admins: + $ref: "#/components/schemas/Users" + description: | + 管理者の一覧。 required: - questions - respondents @@ -602,13 +628,24 @@ components: QuestionnaireTargetsAndAdmins: type: object properties: - targets: + target: $ref: "#/components/schemas/UsersAndGroups" - admins: + admin: $ref: "#/components/schemas/UsersAndGroups" required: - - targets - - admins + - target + - admin + EditQuestionnaireTargetsAndAdmins: + type: object + properties: + target: + $ref: "#/components/schemas/UsersAndGroups" + description: | + nullの場合は対象者を変更しない。 + admin: + $ref: "#/components/schemas/UsersAndGroups" + description: | + nullの場合は管理者を変更しない。 QuestionnaireIsRemindEnabled: type: object properties: diff --git a/openapi/spec.go b/openapi/spec.go index 5cfaccae..98285ce8 100644 --- a/openapi/spec.go +++ b/openapi/spec.go @@ -18,75 +18,76 @@ import ( // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/openapi/types.go b/openapi/types.go index 49d72551..5e9c0b10 100644 --- a/openapi/types.go +++ b/openapi/types.go @@ -132,6 +132,37 @@ const ( SortTypeTitleDESC SortType = "-title" ) +// EditQuestionnaire defines model for EditQuestionnaire. +type EditQuestionnaire struct { + Admin *UsersAndGroups `json:"admin,omitempty"` + Description string `json:"description"` + + // IsAnonymous 匿名回答かどうか + IsAnonymous bool `json:"is_anonymous"` + + // IsDuplicateAnswerAllowed 一人が複数回回答できるかどうか + IsDuplicateAnswerAllowed bool `json:"is_duplicate_answer_allowed"` + + // IsPublished アンケートが公開されているかどうか + IsPublished bool `json:"is_published"` + QuestionnaireId int `json:"questionnaire_id"` + Questions []Question `json:"questions"` + + // ResponseDueDateTime 回答期限。この日時を過ぎたら回答できなくなる。nullの場合は回答期限なし。 + ResponseDueDateTime *time.Time `json:"response_due_date_time,omitempty"` + + // ResponseViewableBy アンケートの結果を, 運営は見られる ("admins"), 回答済みの人は見られる ("respondents") 誰でも見られる ("anyone") + ResponseViewableBy ResShareType `json:"response_viewable_by"` + Target *UsersAndGroups `json:"target,omitempty"` + Title string `json:"title"` +} + +// EditQuestionnaireTargetsAndAdmins defines model for EditQuestionnaireTargetsAndAdmins. +type EditQuestionnaireTargetsAndAdmins struct { + Admin *UsersAndGroups `json:"admin,omitempty"` + Target *UsersAndGroups `json:"target,omitempty"` +} + // Groups defines model for Groups. type Groups = []string @@ -146,7 +177,7 @@ type NewQuestion struct { // NewQuestionnaire defines model for NewQuestionnaire. type NewQuestionnaire struct { - Admins UsersAndGroups `json:"admins"` + Admin UsersAndGroups `json:"admin"` Description string `json:"description"` // IsAnonymous 匿名回答かどうか @@ -164,7 +195,7 @@ type NewQuestionnaire struct { // ResponseViewableBy アンケートの結果を, 運営は見られる ("admins"), 回答済みの人は見られる ("respondents") 誰でも見られる ("anyone") ResponseViewableBy ResShareType `json:"response_viewable_by"` - Targets UsersAndGroups `json:"targets"` + Target UsersAndGroups `json:"target"` Title string `json:"title"` } @@ -309,8 +340,7 @@ type QuestionTypeTextLongQuestionType string // QuestionnaireBase defines model for QuestionnaireBase. type QuestionnaireBase struct { - Admins UsersAndGroups `json:"admins"` - Description string `json:"description"` + Description string `json:"description"` // IsAnonymous 匿名回答かどうか IsAnonymous bool `json:"is_anonymous"` @@ -325,9 +355,8 @@ type QuestionnaireBase struct { ResponseDueDateTime *time.Time `json:"response_due_date_time,omitempty"` // ResponseViewableBy アンケートの結果を, 運営は見られる ("admins"), 回答済みの人は見られる ("respondents") 誰でも見られる ("anyone") - ResponseViewableBy ResShareType `json:"response_viewable_by"` - Targets UsersAndGroups `json:"targets"` - Title string `json:"title"` + ResponseViewableBy ResShareType `json:"response_viewable_by"` + Title string `json:"title"` } // QuestionnaireCreatedAt defines model for QuestionnaireCreatedAt. @@ -342,9 +371,12 @@ type QuestionnaireDescription struct { // QuestionnaireDetail defines model for QuestionnaireDetail. type QuestionnaireDetail struct { - Admins UsersAndGroups `json:"admins"` - CreatedAt time.Time `json:"created_at"` - Description string `json:"description"` + Admin UsersAndGroups `json:"admin"` + + // Admins 回答者の一覧。匿名回答の場合はnull。 + Admins *Users `json:"admins,omitempty"` + CreatedAt time.Time `json:"created_at"` + Description string `json:"description"` // IsAnonymous 匿名回答かどうか IsAnonymous bool `json:"is_anonymous"` @@ -357,15 +389,20 @@ type QuestionnaireDetail struct { ModifiedAt time.Time `json:"modified_at"` QuestionnaireId int `json:"questionnaire_id"` Questions []Question `json:"questions"` - Respondents Users `json:"respondents"` + + // Respondents 回答者の一覧。匿名回答の場合はnull。 + Respondents Users `json:"respondents"` // ResponseDueDateTime 回答期限。この日時を過ぎたら回答できなくなる。nullの場合は回答期限なし。 ResponseDueDateTime *time.Time `json:"response_due_date_time,omitempty"` // ResponseViewableBy アンケートの結果を, 運営は見られる ("admins"), 回答済みの人は見られる ("respondents") 誰でも見られる ("anyone") ResponseViewableBy ResShareType `json:"response_viewable_by"` - Targets UsersAndGroups `json:"targets"` - Title string `json:"title"` + Target UsersAndGroups `json:"target"` + + // Targets 回答者の一覧。匿名回答の場合はnull。 + Targets *Users `json:"targets,omitempty"` + Title string `json:"title"` } // QuestionnaireID defines model for QuestionnaireID. @@ -478,8 +515,8 @@ type QuestionnaireSummary struct { // QuestionnaireTargetsAndAdmins defines model for QuestionnaireTargetsAndAdmins. type QuestionnaireTargetsAndAdmins struct { - Admins UsersAndGroups `json:"admins"` - Targets UsersAndGroups `json:"targets"` + Admin UsersAndGroups `json:"admin"` + Target UsersAndGroups `json:"target"` } // QuestionnaireTitle defines model for QuestionnaireTitle. @@ -608,13 +645,15 @@ type SortType string // TraqId traQ ID type TraqId = string -// Users defines model for Users. +// Users 回答者の一覧。匿名回答の場合はnull。 type Users = []TraqId // UsersAndGroups defines model for UsersAndGroups. type UsersAndGroups struct { Groups Groups `json:"groups"` - Users Users `json:"users"` + + // Users 回答者の一覧。匿名回答の場合はnull。 + Users Users `json:"users"` } // OnlyAdministratedByMeInQuery defines model for onlyAdministratedByMeInQuery. @@ -681,7 +720,7 @@ type GetMyResponsesParams struct { type PostQuestionnaireJSONRequestBody = NewQuestionnaire // EditQuestionnaireJSONRequestBody defines body for EditQuestionnaire for application/json ContentType. -type EditQuestionnaireJSONRequestBody = QuestionnaireDetail +type EditQuestionnaireJSONRequestBody = EditQuestionnaire // EditQuestionnaireMyRemindStatusJSONRequestBody defines body for EditQuestionnaireMyRemindStatus for application/json ContentType. type EditQuestionnaireMyRemindStatusJSONRequestBody = QuestionnaireIsRemindEnabled