This is an automated email from the ASF dual-hosted git repository. linkinstar pushed a commit to branch test in repository https://gitbox.apache.org/repos/asf/answer.git
commit a5edc4fc013fa30b2281d1b63539c4f9cc85d6e5 Author: LinkinStars <[email protected]> AuthorDate: Wed Jan 28 11:15:40 2026 +0800 feat: add advanced site settings and related API endpoints --- docs/docs.go | 1008 +++++++++++++++++++++++++++++--------------- docs/swagger.json | 1008 +++++++++++++++++++++++++++++--------------- docs/swagger.yaml | 510 +++++++++++++++------- internal/migrations/v32.go | 116 ----- 4 files changed, 1702 insertions(+), 940 deletions(-) diff --git a/docs/docs.go b/docs/docs.go index 9c984d26..57a23d43 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -1393,6 +1393,77 @@ const docTemplate = `{ } } }, + "/answer/admin/api/siteinfo/advanced": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "get site advanced setting", + "produces": [ + "application/json" + ], + "tags": [ + "admin" + ], + "summary": "get site advanced setting", + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/handler.RespBody" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/schema.SiteAdvancedResp" + } + } + } + ] + } + } + } + }, + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "update site advanced info", + "produces": [ + "application/json" + ], + "tags": [ + "admin" + ], + "summary": "update site advanced info", + "parameters": [ + { + "description": "advanced settings", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/schema.SiteAdvancedReq" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/handler.RespBody" + } + } + } + } + }, "/answer/admin/api/siteinfo/branding": { "get": { "security": [ @@ -1633,7 +1704,7 @@ const docTemplate = `{ "type": "object", "properties": { "data": { - "$ref": "#/definitions/schema.SiteInterfaceResp" + "$ref": "#/definitions/schema.SiteInterfaceSettingsResp" } } } @@ -1677,21 +1748,21 @@ const docTemplate = `{ } } }, - "/answer/admin/api/siteinfo/legal": { + "/answer/admin/api/siteinfo/login": { "get": { "security": [ { "ApiKeyAuth": [] } ], - "description": "Set the legal information for the site", + "description": "get site info login config", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "Set the legal information for the site", + "summary": "get site info login config", "responses": { "200": { "description": "OK", @@ -1704,7 +1775,7 @@ const docTemplate = `{ "type": "object", "properties": { "data": { - "$ref": "#/definitions/schema.SiteLegalResp" + "$ref": "#/definitions/schema.SiteLoginResp" } } } @@ -1719,22 +1790,22 @@ const docTemplate = `{ "ApiKeyAuth": [] } ], - "description": "update site legal info", + "description": "update site login", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "update site legal info", + "summary": "update site login", "parameters": [ { - "description": "write info", + "description": "login info", "name": "data", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/schema.SiteLegalReq" + "$ref": "#/definitions/schema.SiteLoginReq" } } ], @@ -1748,21 +1819,21 @@ const docTemplate = `{ } } }, - "/answer/admin/api/siteinfo/login": { + "/answer/admin/api/siteinfo/polices": { "get": { "security": [ { "ApiKeyAuth": [] } ], - "description": "get site info login config", + "description": "Get the policies information for the site", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "get site info login config", + "summary": "Get the policies information for the site", "responses": { "200": { "description": "OK", @@ -1775,7 +1846,7 @@ const docTemplate = `{ "type": "object", "properties": { "data": { - "$ref": "#/definitions/schema.SiteLoginResp" + "$ref": "#/definitions/schema.SitePoliciesResp" } } } @@ -1790,22 +1861,22 @@ const docTemplate = `{ "ApiKeyAuth": [] } ], - "description": "update site login", + "description": "update site policies configuration", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "update site login", + "summary": "update site policies configuration", "parameters": [ { - "description": "login info", + "description": "write info", "name": "data", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/schema.SiteLoginReq" + "$ref": "#/definitions/schema.SitePoliciesReq" } } ], @@ -1819,21 +1890,21 @@ const docTemplate = `{ } } }, - "/answer/admin/api/siteinfo/seo": { + "/answer/admin/api/siteinfo/question": { "get": { "security": [ { "ApiKeyAuth": [] } ], - "description": "get site seo information", + "description": "get site questions setting", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "get site seo information", + "summary": "get site questions setting", "responses": { "200": { "description": "OK", @@ -1846,7 +1917,7 @@ const docTemplate = `{ "type": "object", "properties": { "data": { - "$ref": "#/definitions/schema.SiteSeoResp" + "$ref": "#/definitions/schema.SiteQuestionsResp" } } } @@ -1861,22 +1932,22 @@ const docTemplate = `{ "ApiKeyAuth": [] } ], - "description": "update site seo information", + "description": "update site question settings", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "update site seo information", + "summary": "update site question settings", "parameters": [ { - "description": "seo", + "description": "questions settings", "name": "data", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/schema.SiteSeoReq" + "$ref": "#/definitions/schema.SiteQuestionsReq" } } ], @@ -1890,21 +1961,21 @@ const docTemplate = `{ } } }, - "/answer/admin/api/siteinfo/theme": { + "/answer/admin/api/siteinfo/security": { "get": { "security": [ { "ApiKeyAuth": [] } ], - "description": "get site info theme config", + "description": "Get the security information for the site", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "get site info theme config", + "summary": "Get the security information for the site", "responses": { "200": { "description": "OK", @@ -1917,7 +1988,7 @@ const docTemplate = `{ "type": "object", "properties": { "data": { - "$ref": "#/definitions/schema.SiteThemeResp" + "$ref": "#/definitions/schema.SiteSecurityResp" } } } @@ -1932,22 +2003,22 @@ const docTemplate = `{ "ApiKeyAuth": [] } ], - "description": "update site custom css html config", + "description": "update site security configuration", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "update site custom css html config", + "summary": "update site security configuration", "parameters": [ { - "description": "login info", + "description": "write info", "name": "data", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/schema.SiteThemeReq" + "$ref": "#/definitions/schema.SiteSecurityReq" } } ], @@ -1961,21 +2032,21 @@ const docTemplate = `{ } } }, - "/answer/admin/api/siteinfo/users": { + "/answer/admin/api/siteinfo/seo": { "get": { "security": [ { "ApiKeyAuth": [] } ], - "description": "get site user config", + "description": "get site seo information", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "get site user config", + "summary": "get site seo information", "responses": { "200": { "description": "OK", @@ -1988,7 +2059,7 @@ const docTemplate = `{ "type": "object", "properties": { "data": { - "$ref": "#/definitions/schema.SiteUsersResp" + "$ref": "#/definitions/schema.SiteSeoResp" } } } @@ -2003,22 +2074,22 @@ const docTemplate = `{ "ApiKeyAuth": [] } ], - "description": "update site info config about users", + "description": "update site seo information", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "update site info config about users", + "summary": "update site seo information", "parameters": [ { - "description": "users info", + "description": "seo", "name": "data", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/schema.SiteUsersReq" + "$ref": "#/definitions/schema.SiteSeoReq" } } ], @@ -2032,21 +2103,21 @@ const docTemplate = `{ } } }, - "/answer/admin/api/siteinfo/write": { + "/answer/admin/api/siteinfo/tag": { "get": { "security": [ { "ApiKeyAuth": [] } ], - "description": "get site interface", + "description": "get site tags setting", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "get site interface", + "summary": "get site tags setting", "responses": { "200": { "description": "OK", @@ -2059,7 +2130,7 @@ const docTemplate = `{ "type": "object", "properties": { "data": { - "$ref": "#/definitions/schema.SiteWriteResp" + "$ref": "#/definitions/schema.SiteTagsResp" } } } @@ -2074,22 +2145,22 @@ const docTemplate = `{ "ApiKeyAuth": [] } ], - "description": "update site write info", + "description": "update site tag settings", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "update site write info", + "summary": "update site tag settings", "parameters": [ { - "description": "write info", + "description": "tags settings", "name": "data", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/schema.SiteWriteReq" + "$ref": "#/definitions/schema.SiteTagsReq" } } ], @@ -2103,57 +2174,64 @@ const docTemplate = `{ } } }, - "/answer/admin/api/theme/options": { + "/answer/admin/api/siteinfo/theme": { "get": { "security": [ { "ApiKeyAuth": [] } ], - "description": "Get theme options", + "description": "get site info theme config", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "Get theme options", + "summary": "get site info theme config", "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/handler.RespBody" + "allOf": [ + { + "$ref": "#/definitions/handler.RespBody" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/schema.SiteThemeResp" + } + } + } + ] } } } - } - }, - "/answer/admin/api/user": { - "post": { + }, + "put": { "security": [ { "ApiKeyAuth": [] } ], - "description": "add user", - "consumes": [ - "application/json" - ], + "description": "update site custom css html config", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "add user", + "summary": "update site custom css html config", "parameters": [ { - "description": "user", + "description": "login info", "name": "data", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/schema.AddUserReq" + "$ref": "#/definitions/schema.SiteThemeReq" } } ], @@ -2167,30 +2245,21 @@ const docTemplate = `{ } } }, - "/answer/admin/api/user/activation": { + "/answer/admin/api/siteinfo/users": { "get": { "security": [ { "ApiKeyAuth": [] } ], - "description": "get user activation", + "description": "get site user config", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "get user activation", - "parameters": [ - { - "type": "string", - "description": "user id", - "name": "user_id", - "in": "query", - "required": true - } - ], + "summary": "get site user config", "responses": { "200": { "description": "OK", @@ -2203,7 +2272,7 @@ const docTemplate = `{ "type": "object", "properties": { "data": { - "$ref": "#/definitions/schema.GetUserActivationResp" + "$ref": "#/definitions/schema.SiteUsersResp" } } } @@ -2211,34 +2280,29 @@ const docTemplate = `{ } } } - } - }, - "/answer/admin/api/user/password": { + }, "put": { "security": [ { "ApiKeyAuth": [] } ], - "description": "update user password", - "consumes": [ - "application/json" - ], + "description": "update site info config about users", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "update user password", + "summary": "update site info config about users", "parameters": [ { - "description": "user", + "description": "users info", "name": "data", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/schema.UpdateUserPasswordReq" + "$ref": "#/definitions/schema.SiteUsersReq" } } ], @@ -2252,71 +2316,64 @@ const docTemplate = `{ } } }, - "/answer/admin/api/user/profile": { - "put": { + "/answer/admin/api/siteinfo/users-settings": { + "get": { "security": [ { "ApiKeyAuth": [] } ], - "description": "edit user profile", - "consumes": [ - "application/json" - ], + "description": "get site interface", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "edit user profile", - "parameters": [ - { - "description": "user", - "name": "data", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/schema.EditUserProfileReq" - } - } - ], + "summary": "get site interface", "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/handler.RespBody" + "allOf": [ + { + "$ref": "#/definitions/handler.RespBody" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/schema.SiteUsersSettingsResp" + } + } + } + ] } } } - } - }, - "/answer/admin/api/user/role": { + }, "put": { "security": [ { "ApiKeyAuth": [] } ], - "description": "update user role", - "consumes": [ - "application/json" - ], + "description": "update site info users settings", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "update user role", + "summary": "update site info users settings", "parameters": [ { - "description": "user", + "description": "general", "name": "data", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/schema.UpdateUserRoleReq" + "$ref": "#/definitions/schema.SiteUsersSettingsReq" } } ], @@ -2330,35 +2387,21 @@ const docTemplate = `{ } } }, - "/answer/admin/api/user/status": { - "put": { + "/answer/admin/api/theme/options": { + "get": { "security": [ { "ApiKeyAuth": [] } ], - "description": "update user", - "consumes": [ - "application/json" - ], + "description": "Get theme options", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "update user", - "parameters": [ - { - "description": "user", - "name": "data", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/schema.UpdateUserStatusReq" - } - } - ], + "summary": "Get theme options", "responses": { "200": { "description": "OK", @@ -2369,7 +2412,248 @@ const docTemplate = `{ } } }, - "/answer/admin/api/users": { + "/answer/admin/api/user": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "add user", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "admin" + ], + "summary": "add user", + "parameters": [ + { + "description": "user", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/schema.AddUserReq" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/handler.RespBody" + } + } + } + } + }, + "/answer/admin/api/user/activation": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "get user activation", + "produces": [ + "application/json" + ], + "tags": [ + "admin" + ], + "summary": "get user activation", + "parameters": [ + { + "type": "string", + "description": "user id", + "name": "user_id", + "in": "query", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/handler.RespBody" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/schema.GetUserActivationResp" + } + } + } + ] + } + } + } + } + }, + "/answer/admin/api/user/password": { + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "update user password", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "admin" + ], + "summary": "update user password", + "parameters": [ + { + "description": "user", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/schema.UpdateUserPasswordReq" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/handler.RespBody" + } + } + } + } + }, + "/answer/admin/api/user/profile": { + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "edit user profile", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "admin" + ], + "summary": "edit user profile", + "parameters": [ + { + "description": "user", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/schema.EditUserProfileReq" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/handler.RespBody" + } + } + } + } + }, + "/answer/admin/api/user/role": { + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "update user role", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "admin" + ], + "summary": "update user role", + "parameters": [ + { + "description": "user", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/schema.UpdateUserRoleReq" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/handler.RespBody" + } + } + } + } + }, + "/answer/admin/api/user/status": { + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "update user", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "admin" + ], + "summary": "update user", + "parameters": [ + { + "description": "user", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/schema.UpdateUserStatusReq" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/handler.RespBody" + } + } + } + } + }, + "/answer/admin/api/users": { "post": { "security": [ { @@ -11480,19 +11764,71 @@ const docTemplate = `{ } } }, - "schema.SiteBrandingReq": { + "schema.SiteAdvancedReq": { "type": "object", "properties": { - "favicon": { - "type": "string", - "maxLength": 512 - }, - "logo": { - "type": "string", - "maxLength": 512 + "authorized_attachment_extensions": { + "type": "array", + "items": { + "type": "string" + } }, - "mobile_logo": { - "type": "string", + "authorized_image_extensions": { + "type": "array", + "items": { + "type": "string" + } + }, + "max_attachment_size": { + "type": "integer" + }, + "max_image_megapixel": { + "type": "integer" + }, + "max_image_size": { + "type": "integer" + } + } + }, + "schema.SiteAdvancedResp": { + "type": "object", + "properties": { + "authorized_attachment_extensions": { + "type": "array", + "items": { + "type": "string" + } + }, + "authorized_image_extensions": { + "type": "array", + "items": { + "type": "string" + } + }, + "max_attachment_size": { + "type": "integer" + }, + "max_image_megapixel": { + "type": "integer" + }, + "max_image_size": { + "type": "integer" + } + } + }, + "schema.SiteBrandingReq": { + "type": "object", + "properties": { + "favicon": { + "type": "string", + "maxLength": 512 + }, + "logo": { + "type": "string", + "maxLength": 512 + }, + "mobile_logo": { + "type": "string", "maxLength": 512 }, "square_icon": { @@ -11580,9 +11916,6 @@ const docTemplate = `{ "site_url" ], "properties": { - "check_update": { - "type": "boolean" - }, "contact_email": { "type": "string", "maxLength": 512 @@ -11613,9 +11946,6 @@ const docTemplate = `{ "site_url" ], "properties": { - "check_update": { - "type": "boolean" - }, "contact_email": { "type": "string", "maxLength": 512 @@ -11654,7 +11984,7 @@ const docTemplate = `{ "$ref": "#/definitions/schema.SiteGeneralResp" }, "interface": { - "$ref": "#/definitions/schema.SiteInterfaceResp" + "$ref": "#/definitions/schema.SiteInterfaceSettingsResp" }, "login": { "$ref": "#/definitions/schema.SiteLoginResp" @@ -11665,21 +11995,33 @@ const docTemplate = `{ "revision": { "type": "string" }, + "site_advanced": { + "$ref": "#/definitions/schema.SiteAdvancedResp" + }, "site_legal": { "$ref": "#/definitions/schema.SiteLegalSimpleResp" }, + "site_questions": { + "$ref": "#/definitions/schema.SiteQuestionsResp" + }, + "site_security": { + "$ref": "#/definitions/schema.SiteSecurityResp" + }, "site_seo": { "$ref": "#/definitions/schema.SiteSeoResp" }, + "site_tags": { + "$ref": "#/definitions/schema.SiteTagsResp" + }, "site_users": { "$ref": "#/definitions/schema.SiteUsersResp" }, - "site_write": { - "$ref": "#/definitions/schema.SiteWriteResp" - }, "theme": { "$ref": "#/definitions/schema.SiteThemeResp" }, + "users_settings": { + "$ref": "#/definitions/schema.SiteUsersSettingsResp" + }, "version": { "type": "string" } @@ -11688,21 +12030,10 @@ const docTemplate = `{ "schema.SiteInterfaceReq": { "type": "object", "required": [ - "default_avatar", "language", "time_zone" ], "properties": { - "default_avatar": { - "type": "string", - "enum": [ - "system", - "gravatar" - ] - }, - "gravatar_base_url": { - "type": "string" - }, "language": { "type": "string", "maxLength": 128 @@ -11713,24 +12044,13 @@ const docTemplate = `{ } } }, - "schema.SiteInterfaceResp": { + "schema.SiteInterfaceSettingsResp": { "type": "object", "required": [ - "default_avatar", "language", "time_zone" ], "properties": { - "default_avatar": { - "type": "string", - "enum": [ - "system", - "gravatar" - ] - }, - "gravatar_base_url": { - "type": "string" - }, "language": { "type": "string", "maxLength": 128 @@ -11741,60 +12061,6 @@ const docTemplate = `{ } } }, - "schema.SiteLegalReq": { - "type": "object", - "required": [ - "external_content_display" - ], - "properties": { - "external_content_display": { - "type": "string", - "enum": [ - "always_display", - "ask_before_display" - ] - }, - "privacy_policy_original_text": { - "type": "string" - }, - "privacy_policy_parsed_text": { - "type": "string" - }, - "terms_of_service_original_text": { - "type": "string" - }, - "terms_of_service_parsed_text": { - "type": "string" - } - } - }, - "schema.SiteLegalResp": { - "type": "object", - "required": [ - "external_content_display" - ], - "properties": { - "external_content_display": { - "type": "string", - "enum": [ - "always_display", - "ask_before_display" - ] - }, - "privacy_policy_original_text": { - "type": "string" - }, - "privacy_policy_parsed_text": { - "type": "string" - }, - "terms_of_service_original_text": { - "type": "string" - }, - "terms_of_service_parsed_text": { - "type": "string" - } - } - }, "schema.SiteLegalSimpleResp": { "type": "object", "required": [ @@ -11827,9 +12093,6 @@ const docTemplate = `{ }, "allow_password_login": { "type": "boolean" - }, - "login_required": { - "type": "boolean" } } }, @@ -11850,9 +12113,6 @@ const docTemplate = `{ }, "allow_password_login": { "type": "boolean" - }, - "login_required": { - "type": "boolean" } } }, @@ -11881,6 +12141,118 @@ const docTemplate = `{ } } }, + "schema.SitePoliciesReq": { + "type": "object", + "properties": { + "privacy_policy_original_text": { + "type": "string" + }, + "privacy_policy_parsed_text": { + "type": "string" + }, + "terms_of_service_original_text": { + "type": "string" + }, + "terms_of_service_parsed_text": { + "type": "string" + } + } + }, + "schema.SitePoliciesResp": { + "type": "object", + "properties": { + "privacy_policy_original_text": { + "type": "string" + }, + "privacy_policy_parsed_text": { + "type": "string" + }, + "terms_of_service_original_text": { + "type": "string" + }, + "terms_of_service_parsed_text": { + "type": "string" + } + } + }, + "schema.SiteQuestionsReq": { + "type": "object", + "properties": { + "min_content": { + "type": "integer", + "maximum": 65535, + "minimum": 0 + }, + "min_tags": { + "type": "integer", + "maximum": 5, + "minimum": 0 + }, + "restrict_answer": { + "type": "boolean" + } + } + }, + "schema.SiteQuestionsResp": { + "type": "object", + "properties": { + "min_content": { + "type": "integer", + "maximum": 65535, + "minimum": 0 + }, + "min_tags": { + "type": "integer", + "maximum": 5, + "minimum": 0 + }, + "restrict_answer": { + "type": "boolean" + } + } + }, + "schema.SiteSecurityReq": { + "type": "object", + "required": [ + "external_content_display" + ], + "properties": { + "check_update": { + "type": "boolean" + }, + "external_content_display": { + "type": "string", + "enum": [ + "always_display", + "ask_before_display" + ] + }, + "login_required": { + "type": "boolean" + } + } + }, + "schema.SiteSecurityResp": { + "type": "object", + "required": [ + "external_content_display" + ], + "properties": { + "check_update": { + "type": "boolean" + }, + "external_content_display": { + "type": "string", + "enum": [ + "always_display", + "ask_before_display" + ] + }, + "login_required": { + "type": "boolean" + } + } + }, "schema.SiteSeoReq": { "type": "object", "required": [ @@ -11915,6 +12287,46 @@ const docTemplate = `{ } } }, + "schema.SiteTagsReq": { + "type": "object", + "properties": { + "recommend_tags": { + "type": "array", + "items": { + "$ref": "#/definitions/schema.SiteWriteTag" + } + }, + "required_tag": { + "type": "boolean" + }, + "reserved_tags": { + "type": "array", + "items": { + "$ref": "#/definitions/schema.SiteWriteTag" + } + } + } + }, + "schema.SiteTagsResp": { + "type": "object", + "properties": { + "recommend_tags": { + "type": "array", + "items": { + "$ref": "#/definitions/schema.SiteWriteTag" + } + }, + "required_tag": { + "type": "boolean" + }, + "reserved_tags": { + "type": "array", + "items": { + "$ref": "#/definitions/schema.SiteWriteTag" + } + } + } + }, "schema.SiteThemeReq": { "type": "object", "required": [ @@ -12038,111 +12450,39 @@ const docTemplate = `{ } } }, - "schema.SiteWriteReq": { + "schema.SiteUsersSettingsReq": { "type": "object", + "required": [ + "default_avatar" + ], "properties": { - "authorized_attachment_extensions": { - "type": "array", - "items": { - "type": "string" - } - }, - "authorized_image_extensions": { - "type": "array", - "items": { - "type": "string" - } - }, - "max_attachment_size": { - "type": "integer" - }, - "max_image_megapixel": { - "type": "integer" - }, - "max_image_size": { - "type": "integer" - }, - "min_content": { - "type": "integer", - "maximum": 65535, - "minimum": 0 - }, - "min_tags": { - "type": "integer", - "maximum": 5, - "minimum": 0 - }, - "recommend_tags": { - "type": "array", - "items": { - "$ref": "#/definitions/schema.SiteWriteTag" - } - }, - "required_tag": { - "type": "boolean" - }, - "reserved_tags": { - "type": "array", - "items": { - "$ref": "#/definitions/schema.SiteWriteTag" - } + "default_avatar": { + "type": "string", + "enum": [ + "system", + "gravatar" + ] }, - "restrict_answer": { - "type": "boolean" + "gravatar_base_url": { + "type": "string" } } }, - "schema.SiteWriteResp": { + "schema.SiteUsersSettingsResp": { "type": "object", + "required": [ + "default_avatar" + ], "properties": { - "authorized_attachment_extensions": { - "type": "array", - "items": { - "type": "string" - } - }, - "authorized_image_extensions": { - "type": "array", - "items": { - "type": "string" - } - }, - "max_attachment_size": { - "type": "integer" - }, - "max_image_megapixel": { - "type": "integer" - }, - "max_image_size": { - "type": "integer" - }, - "min_content": { - "type": "integer", - "maximum": 65535, - "minimum": 0 - }, - "min_tags": { - "type": "integer", - "maximum": 5, - "minimum": 0 - }, - "recommend_tags": { - "type": "array", - "items": { - "$ref": "#/definitions/schema.SiteWriteTag" - } - }, - "required_tag": { - "type": "boolean" - }, - "reserved_tags": { - "type": "array", - "items": { - "$ref": "#/definitions/schema.SiteWriteTag" - } + "default_avatar": { + "type": "string", + "enum": [ + "system", + "gravatar" + ] }, - "restrict_answer": { - "type": "boolean" + "gravatar_base_url": { + "type": "string" } } }, diff --git a/docs/swagger.json b/docs/swagger.json index 67148ea4..dac2b38f 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -1366,6 +1366,77 @@ } } }, + "/answer/admin/api/siteinfo/advanced": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "get site advanced setting", + "produces": [ + "application/json" + ], + "tags": [ + "admin" + ], + "summary": "get site advanced setting", + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/handler.RespBody" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/schema.SiteAdvancedResp" + } + } + } + ] + } + } + } + }, + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "update site advanced info", + "produces": [ + "application/json" + ], + "tags": [ + "admin" + ], + "summary": "update site advanced info", + "parameters": [ + { + "description": "advanced settings", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/schema.SiteAdvancedReq" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/handler.RespBody" + } + } + } + } + }, "/answer/admin/api/siteinfo/branding": { "get": { "security": [ @@ -1606,7 +1677,7 @@ "type": "object", "properties": { "data": { - "$ref": "#/definitions/schema.SiteInterfaceResp" + "$ref": "#/definitions/schema.SiteInterfaceSettingsResp" } } } @@ -1650,21 +1721,21 @@ } } }, - "/answer/admin/api/siteinfo/legal": { + "/answer/admin/api/siteinfo/login": { "get": { "security": [ { "ApiKeyAuth": [] } ], - "description": "Set the legal information for the site", + "description": "get site info login config", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "Set the legal information for the site", + "summary": "get site info login config", "responses": { "200": { "description": "OK", @@ -1677,7 +1748,7 @@ "type": "object", "properties": { "data": { - "$ref": "#/definitions/schema.SiteLegalResp" + "$ref": "#/definitions/schema.SiteLoginResp" } } } @@ -1692,22 +1763,22 @@ "ApiKeyAuth": [] } ], - "description": "update site legal info", + "description": "update site login", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "update site legal info", + "summary": "update site login", "parameters": [ { - "description": "write info", + "description": "login info", "name": "data", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/schema.SiteLegalReq" + "$ref": "#/definitions/schema.SiteLoginReq" } } ], @@ -1721,21 +1792,21 @@ } } }, - "/answer/admin/api/siteinfo/login": { + "/answer/admin/api/siteinfo/polices": { "get": { "security": [ { "ApiKeyAuth": [] } ], - "description": "get site info login config", + "description": "Get the policies information for the site", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "get site info login config", + "summary": "Get the policies information for the site", "responses": { "200": { "description": "OK", @@ -1748,7 +1819,7 @@ "type": "object", "properties": { "data": { - "$ref": "#/definitions/schema.SiteLoginResp" + "$ref": "#/definitions/schema.SitePoliciesResp" } } } @@ -1763,22 +1834,22 @@ "ApiKeyAuth": [] } ], - "description": "update site login", + "description": "update site policies configuration", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "update site login", + "summary": "update site policies configuration", "parameters": [ { - "description": "login info", + "description": "write info", "name": "data", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/schema.SiteLoginReq" + "$ref": "#/definitions/schema.SitePoliciesReq" } } ], @@ -1792,21 +1863,21 @@ } } }, - "/answer/admin/api/siteinfo/seo": { + "/answer/admin/api/siteinfo/question": { "get": { "security": [ { "ApiKeyAuth": [] } ], - "description": "get site seo information", + "description": "get site questions setting", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "get site seo information", + "summary": "get site questions setting", "responses": { "200": { "description": "OK", @@ -1819,7 +1890,7 @@ "type": "object", "properties": { "data": { - "$ref": "#/definitions/schema.SiteSeoResp" + "$ref": "#/definitions/schema.SiteQuestionsResp" } } } @@ -1834,22 +1905,22 @@ "ApiKeyAuth": [] } ], - "description": "update site seo information", + "description": "update site question settings", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "update site seo information", + "summary": "update site question settings", "parameters": [ { - "description": "seo", + "description": "questions settings", "name": "data", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/schema.SiteSeoReq" + "$ref": "#/definitions/schema.SiteQuestionsReq" } } ], @@ -1863,21 +1934,21 @@ } } }, - "/answer/admin/api/siteinfo/theme": { + "/answer/admin/api/siteinfo/security": { "get": { "security": [ { "ApiKeyAuth": [] } ], - "description": "get site info theme config", + "description": "Get the security information for the site", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "get site info theme config", + "summary": "Get the security information for the site", "responses": { "200": { "description": "OK", @@ -1890,7 +1961,7 @@ "type": "object", "properties": { "data": { - "$ref": "#/definitions/schema.SiteThemeResp" + "$ref": "#/definitions/schema.SiteSecurityResp" } } } @@ -1905,22 +1976,22 @@ "ApiKeyAuth": [] } ], - "description": "update site custom css html config", + "description": "update site security configuration", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "update site custom css html config", + "summary": "update site security configuration", "parameters": [ { - "description": "login info", + "description": "write info", "name": "data", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/schema.SiteThemeReq" + "$ref": "#/definitions/schema.SiteSecurityReq" } } ], @@ -1934,21 +2005,21 @@ } } }, - "/answer/admin/api/siteinfo/users": { + "/answer/admin/api/siteinfo/seo": { "get": { "security": [ { "ApiKeyAuth": [] } ], - "description": "get site user config", + "description": "get site seo information", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "get site user config", + "summary": "get site seo information", "responses": { "200": { "description": "OK", @@ -1961,7 +2032,7 @@ "type": "object", "properties": { "data": { - "$ref": "#/definitions/schema.SiteUsersResp" + "$ref": "#/definitions/schema.SiteSeoResp" } } } @@ -1976,22 +2047,22 @@ "ApiKeyAuth": [] } ], - "description": "update site info config about users", + "description": "update site seo information", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "update site info config about users", + "summary": "update site seo information", "parameters": [ { - "description": "users info", + "description": "seo", "name": "data", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/schema.SiteUsersReq" + "$ref": "#/definitions/schema.SiteSeoReq" } } ], @@ -2005,21 +2076,21 @@ } } }, - "/answer/admin/api/siteinfo/write": { + "/answer/admin/api/siteinfo/tag": { "get": { "security": [ { "ApiKeyAuth": [] } ], - "description": "get site interface", + "description": "get site tags setting", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "get site interface", + "summary": "get site tags setting", "responses": { "200": { "description": "OK", @@ -2032,7 +2103,7 @@ "type": "object", "properties": { "data": { - "$ref": "#/definitions/schema.SiteWriteResp" + "$ref": "#/definitions/schema.SiteTagsResp" } } } @@ -2047,22 +2118,22 @@ "ApiKeyAuth": [] } ], - "description": "update site write info", + "description": "update site tag settings", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "update site write info", + "summary": "update site tag settings", "parameters": [ { - "description": "write info", + "description": "tags settings", "name": "data", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/schema.SiteWriteReq" + "$ref": "#/definitions/schema.SiteTagsReq" } } ], @@ -2076,57 +2147,64 @@ } } }, - "/answer/admin/api/theme/options": { + "/answer/admin/api/siteinfo/theme": { "get": { "security": [ { "ApiKeyAuth": [] } ], - "description": "Get theme options", + "description": "get site info theme config", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "Get theme options", + "summary": "get site info theme config", "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/handler.RespBody" + "allOf": [ + { + "$ref": "#/definitions/handler.RespBody" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/schema.SiteThemeResp" + } + } + } + ] } } } - } - }, - "/answer/admin/api/user": { - "post": { + }, + "put": { "security": [ { "ApiKeyAuth": [] } ], - "description": "add user", - "consumes": [ - "application/json" - ], + "description": "update site custom css html config", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "add user", + "summary": "update site custom css html config", "parameters": [ { - "description": "user", + "description": "login info", "name": "data", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/schema.AddUserReq" + "$ref": "#/definitions/schema.SiteThemeReq" } } ], @@ -2140,30 +2218,21 @@ } } }, - "/answer/admin/api/user/activation": { + "/answer/admin/api/siteinfo/users": { "get": { "security": [ { "ApiKeyAuth": [] } ], - "description": "get user activation", + "description": "get site user config", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "get user activation", - "parameters": [ - { - "type": "string", - "description": "user id", - "name": "user_id", - "in": "query", - "required": true - } - ], + "summary": "get site user config", "responses": { "200": { "description": "OK", @@ -2176,7 +2245,7 @@ "type": "object", "properties": { "data": { - "$ref": "#/definitions/schema.GetUserActivationResp" + "$ref": "#/definitions/schema.SiteUsersResp" } } } @@ -2184,34 +2253,29 @@ } } } - } - }, - "/answer/admin/api/user/password": { + }, "put": { "security": [ { "ApiKeyAuth": [] } ], - "description": "update user password", - "consumes": [ - "application/json" - ], + "description": "update site info config about users", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "update user password", + "summary": "update site info config about users", "parameters": [ { - "description": "user", + "description": "users info", "name": "data", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/schema.UpdateUserPasswordReq" + "$ref": "#/definitions/schema.SiteUsersReq" } } ], @@ -2225,71 +2289,64 @@ } } }, - "/answer/admin/api/user/profile": { - "put": { + "/answer/admin/api/siteinfo/users-settings": { + "get": { "security": [ { "ApiKeyAuth": [] } ], - "description": "edit user profile", - "consumes": [ - "application/json" - ], + "description": "get site interface", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "edit user profile", - "parameters": [ - { - "description": "user", - "name": "data", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/schema.EditUserProfileReq" - } - } - ], + "summary": "get site interface", "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/handler.RespBody" + "allOf": [ + { + "$ref": "#/definitions/handler.RespBody" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/schema.SiteUsersSettingsResp" + } + } + } + ] } } } - } - }, - "/answer/admin/api/user/role": { + }, "put": { "security": [ { "ApiKeyAuth": [] } ], - "description": "update user role", - "consumes": [ - "application/json" - ], + "description": "update site info users settings", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "update user role", + "summary": "update site info users settings", "parameters": [ { - "description": "user", + "description": "general", "name": "data", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/schema.UpdateUserRoleReq" + "$ref": "#/definitions/schema.SiteUsersSettingsReq" } } ], @@ -2303,35 +2360,21 @@ } } }, - "/answer/admin/api/user/status": { - "put": { + "/answer/admin/api/theme/options": { + "get": { "security": [ { "ApiKeyAuth": [] } ], - "description": "update user", - "consumes": [ - "application/json" - ], + "description": "Get theme options", "produces": [ "application/json" ], "tags": [ "admin" ], - "summary": "update user", - "parameters": [ - { - "description": "user", - "name": "data", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/schema.UpdateUserStatusReq" - } - } - ], + "summary": "Get theme options", "responses": { "200": { "description": "OK", @@ -2342,7 +2385,248 @@ } } }, - "/answer/admin/api/users": { + "/answer/admin/api/user": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "add user", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "admin" + ], + "summary": "add user", + "parameters": [ + { + "description": "user", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/schema.AddUserReq" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/handler.RespBody" + } + } + } + } + }, + "/answer/admin/api/user/activation": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "get user activation", + "produces": [ + "application/json" + ], + "tags": [ + "admin" + ], + "summary": "get user activation", + "parameters": [ + { + "type": "string", + "description": "user id", + "name": "user_id", + "in": "query", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/handler.RespBody" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/schema.GetUserActivationResp" + } + } + } + ] + } + } + } + } + }, + "/answer/admin/api/user/password": { + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "update user password", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "admin" + ], + "summary": "update user password", + "parameters": [ + { + "description": "user", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/schema.UpdateUserPasswordReq" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/handler.RespBody" + } + } + } + } + }, + "/answer/admin/api/user/profile": { + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "edit user profile", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "admin" + ], + "summary": "edit user profile", + "parameters": [ + { + "description": "user", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/schema.EditUserProfileReq" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/handler.RespBody" + } + } + } + } + }, + "/answer/admin/api/user/role": { + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "update user role", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "admin" + ], + "summary": "update user role", + "parameters": [ + { + "description": "user", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/schema.UpdateUserRoleReq" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/handler.RespBody" + } + } + } + } + }, + "/answer/admin/api/user/status": { + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "update user", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "admin" + ], + "summary": "update user", + "parameters": [ + { + "description": "user", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/schema.UpdateUserStatusReq" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/handler.RespBody" + } + } + } + } + }, + "/answer/admin/api/users": { "post": { "security": [ { @@ -11453,19 +11737,71 @@ } } }, - "schema.SiteBrandingReq": { + "schema.SiteAdvancedReq": { "type": "object", "properties": { - "favicon": { - "type": "string", - "maxLength": 512 - }, - "logo": { - "type": "string", - "maxLength": 512 + "authorized_attachment_extensions": { + "type": "array", + "items": { + "type": "string" + } }, - "mobile_logo": { - "type": "string", + "authorized_image_extensions": { + "type": "array", + "items": { + "type": "string" + } + }, + "max_attachment_size": { + "type": "integer" + }, + "max_image_megapixel": { + "type": "integer" + }, + "max_image_size": { + "type": "integer" + } + } + }, + "schema.SiteAdvancedResp": { + "type": "object", + "properties": { + "authorized_attachment_extensions": { + "type": "array", + "items": { + "type": "string" + } + }, + "authorized_image_extensions": { + "type": "array", + "items": { + "type": "string" + } + }, + "max_attachment_size": { + "type": "integer" + }, + "max_image_megapixel": { + "type": "integer" + }, + "max_image_size": { + "type": "integer" + } + } + }, + "schema.SiteBrandingReq": { + "type": "object", + "properties": { + "favicon": { + "type": "string", + "maxLength": 512 + }, + "logo": { + "type": "string", + "maxLength": 512 + }, + "mobile_logo": { + "type": "string", "maxLength": 512 }, "square_icon": { @@ -11553,9 +11889,6 @@ "site_url" ], "properties": { - "check_update": { - "type": "boolean" - }, "contact_email": { "type": "string", "maxLength": 512 @@ -11586,9 +11919,6 @@ "site_url" ], "properties": { - "check_update": { - "type": "boolean" - }, "contact_email": { "type": "string", "maxLength": 512 @@ -11627,7 +11957,7 @@ "$ref": "#/definitions/schema.SiteGeneralResp" }, "interface": { - "$ref": "#/definitions/schema.SiteInterfaceResp" + "$ref": "#/definitions/schema.SiteInterfaceSettingsResp" }, "login": { "$ref": "#/definitions/schema.SiteLoginResp" @@ -11638,21 +11968,33 @@ "revision": { "type": "string" }, + "site_advanced": { + "$ref": "#/definitions/schema.SiteAdvancedResp" + }, "site_legal": { "$ref": "#/definitions/schema.SiteLegalSimpleResp" }, + "site_questions": { + "$ref": "#/definitions/schema.SiteQuestionsResp" + }, + "site_security": { + "$ref": "#/definitions/schema.SiteSecurityResp" + }, "site_seo": { "$ref": "#/definitions/schema.SiteSeoResp" }, + "site_tags": { + "$ref": "#/definitions/schema.SiteTagsResp" + }, "site_users": { "$ref": "#/definitions/schema.SiteUsersResp" }, - "site_write": { - "$ref": "#/definitions/schema.SiteWriteResp" - }, "theme": { "$ref": "#/definitions/schema.SiteThemeResp" }, + "users_settings": { + "$ref": "#/definitions/schema.SiteUsersSettingsResp" + }, "version": { "type": "string" } @@ -11661,21 +12003,10 @@ "schema.SiteInterfaceReq": { "type": "object", "required": [ - "default_avatar", "language", "time_zone" ], "properties": { - "default_avatar": { - "type": "string", - "enum": [ - "system", - "gravatar" - ] - }, - "gravatar_base_url": { - "type": "string" - }, "language": { "type": "string", "maxLength": 128 @@ -11686,24 +12017,13 @@ } } }, - "schema.SiteInterfaceResp": { + "schema.SiteInterfaceSettingsResp": { "type": "object", "required": [ - "default_avatar", "language", "time_zone" ], "properties": { - "default_avatar": { - "type": "string", - "enum": [ - "system", - "gravatar" - ] - }, - "gravatar_base_url": { - "type": "string" - }, "language": { "type": "string", "maxLength": 128 @@ -11714,60 +12034,6 @@ } } }, - "schema.SiteLegalReq": { - "type": "object", - "required": [ - "external_content_display" - ], - "properties": { - "external_content_display": { - "type": "string", - "enum": [ - "always_display", - "ask_before_display" - ] - }, - "privacy_policy_original_text": { - "type": "string" - }, - "privacy_policy_parsed_text": { - "type": "string" - }, - "terms_of_service_original_text": { - "type": "string" - }, - "terms_of_service_parsed_text": { - "type": "string" - } - } - }, - "schema.SiteLegalResp": { - "type": "object", - "required": [ - "external_content_display" - ], - "properties": { - "external_content_display": { - "type": "string", - "enum": [ - "always_display", - "ask_before_display" - ] - }, - "privacy_policy_original_text": { - "type": "string" - }, - "privacy_policy_parsed_text": { - "type": "string" - }, - "terms_of_service_original_text": { - "type": "string" - }, - "terms_of_service_parsed_text": { - "type": "string" - } - } - }, "schema.SiteLegalSimpleResp": { "type": "object", "required": [ @@ -11800,9 +12066,6 @@ }, "allow_password_login": { "type": "boolean" - }, - "login_required": { - "type": "boolean" } } }, @@ -11823,9 +12086,6 @@ }, "allow_password_login": { "type": "boolean" - }, - "login_required": { - "type": "boolean" } } }, @@ -11854,6 +12114,118 @@ } } }, + "schema.SitePoliciesReq": { + "type": "object", + "properties": { + "privacy_policy_original_text": { + "type": "string" + }, + "privacy_policy_parsed_text": { + "type": "string" + }, + "terms_of_service_original_text": { + "type": "string" + }, + "terms_of_service_parsed_text": { + "type": "string" + } + } + }, + "schema.SitePoliciesResp": { + "type": "object", + "properties": { + "privacy_policy_original_text": { + "type": "string" + }, + "privacy_policy_parsed_text": { + "type": "string" + }, + "terms_of_service_original_text": { + "type": "string" + }, + "terms_of_service_parsed_text": { + "type": "string" + } + } + }, + "schema.SiteQuestionsReq": { + "type": "object", + "properties": { + "min_content": { + "type": "integer", + "maximum": 65535, + "minimum": 0 + }, + "min_tags": { + "type": "integer", + "maximum": 5, + "minimum": 0 + }, + "restrict_answer": { + "type": "boolean" + } + } + }, + "schema.SiteQuestionsResp": { + "type": "object", + "properties": { + "min_content": { + "type": "integer", + "maximum": 65535, + "minimum": 0 + }, + "min_tags": { + "type": "integer", + "maximum": 5, + "minimum": 0 + }, + "restrict_answer": { + "type": "boolean" + } + } + }, + "schema.SiteSecurityReq": { + "type": "object", + "required": [ + "external_content_display" + ], + "properties": { + "check_update": { + "type": "boolean" + }, + "external_content_display": { + "type": "string", + "enum": [ + "always_display", + "ask_before_display" + ] + }, + "login_required": { + "type": "boolean" + } + } + }, + "schema.SiteSecurityResp": { + "type": "object", + "required": [ + "external_content_display" + ], + "properties": { + "check_update": { + "type": "boolean" + }, + "external_content_display": { + "type": "string", + "enum": [ + "always_display", + "ask_before_display" + ] + }, + "login_required": { + "type": "boolean" + } + } + }, "schema.SiteSeoReq": { "type": "object", "required": [ @@ -11888,6 +12260,46 @@ } } }, + "schema.SiteTagsReq": { + "type": "object", + "properties": { + "recommend_tags": { + "type": "array", + "items": { + "$ref": "#/definitions/schema.SiteWriteTag" + } + }, + "required_tag": { + "type": "boolean" + }, + "reserved_tags": { + "type": "array", + "items": { + "$ref": "#/definitions/schema.SiteWriteTag" + } + } + } + }, + "schema.SiteTagsResp": { + "type": "object", + "properties": { + "recommend_tags": { + "type": "array", + "items": { + "$ref": "#/definitions/schema.SiteWriteTag" + } + }, + "required_tag": { + "type": "boolean" + }, + "reserved_tags": { + "type": "array", + "items": { + "$ref": "#/definitions/schema.SiteWriteTag" + } + } + } + }, "schema.SiteThemeReq": { "type": "object", "required": [ @@ -12011,111 +12423,39 @@ } } }, - "schema.SiteWriteReq": { + "schema.SiteUsersSettingsReq": { "type": "object", + "required": [ + "default_avatar" + ], "properties": { - "authorized_attachment_extensions": { - "type": "array", - "items": { - "type": "string" - } - }, - "authorized_image_extensions": { - "type": "array", - "items": { - "type": "string" - } - }, - "max_attachment_size": { - "type": "integer" - }, - "max_image_megapixel": { - "type": "integer" - }, - "max_image_size": { - "type": "integer" - }, - "min_content": { - "type": "integer", - "maximum": 65535, - "minimum": 0 - }, - "min_tags": { - "type": "integer", - "maximum": 5, - "minimum": 0 - }, - "recommend_tags": { - "type": "array", - "items": { - "$ref": "#/definitions/schema.SiteWriteTag" - } - }, - "required_tag": { - "type": "boolean" - }, - "reserved_tags": { - "type": "array", - "items": { - "$ref": "#/definitions/schema.SiteWriteTag" - } + "default_avatar": { + "type": "string", + "enum": [ + "system", + "gravatar" + ] }, - "restrict_answer": { - "type": "boolean" + "gravatar_base_url": { + "type": "string" } } }, - "schema.SiteWriteResp": { + "schema.SiteUsersSettingsResp": { "type": "object", + "required": [ + "default_avatar" + ], "properties": { - "authorized_attachment_extensions": { - "type": "array", - "items": { - "type": "string" - } - }, - "authorized_image_extensions": { - "type": "array", - "items": { - "type": "string" - } - }, - "max_attachment_size": { - "type": "integer" - }, - "max_image_megapixel": { - "type": "integer" - }, - "max_image_size": { - "type": "integer" - }, - "min_content": { - "type": "integer", - "maximum": 65535, - "minimum": 0 - }, - "min_tags": { - "type": "integer", - "maximum": 5, - "minimum": 0 - }, - "recommend_tags": { - "type": "array", - "items": { - "$ref": "#/definitions/schema.SiteWriteTag" - } - }, - "required_tag": { - "type": "boolean" - }, - "reserved_tags": { - "type": "array", - "items": { - "$ref": "#/definitions/schema.SiteWriteTag" - } + "default_avatar": { + "type": "string", + "enum": [ + "system", + "gravatar" + ] }, - "restrict_answer": { - "type": "boolean" + "gravatar_base_url": { + "type": "string" } } }, diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 03e3508b..7a7adb68 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -2285,6 +2285,40 @@ definitions: prompt_config: $ref: '#/definitions/schema.AIPromptConfig' type: object + schema.SiteAdvancedReq: + properties: + authorized_attachment_extensions: + items: + type: string + type: array + authorized_image_extensions: + items: + type: string + type: array + max_attachment_size: + type: integer + max_image_megapixel: + type: integer + max_image_size: + type: integer + type: object + schema.SiteAdvancedResp: + properties: + authorized_attachment_extensions: + items: + type: string + type: array + authorized_image_extensions: + items: + type: string + type: array + max_attachment_size: + type: integer + max_image_megapixel: + type: integer + max_image_size: + type: integer + type: object schema.SiteBrandingReq: properties: favicon: @@ -2353,8 +2387,6 @@ definitions: type: object schema.SiteGeneralReq: properties: - check_update: - type: boolean contact_email: maxLength: 512 type: string @@ -2377,8 +2409,6 @@ definitions: type: object schema.SiteGeneralResp: properties: - check_update: - type: boolean contact_email: maxLength: 512 type: string @@ -2410,35 +2440,36 @@ definitions: general: $ref: '#/definitions/schema.SiteGeneralResp' interface: - $ref: '#/definitions/schema.SiteInterfaceResp' + $ref: '#/definitions/schema.SiteInterfaceSettingsResp' login: $ref: '#/definitions/schema.SiteLoginResp' mcp_enabled: type: boolean revision: type: string + site_advanced: + $ref: '#/definitions/schema.SiteAdvancedResp' site_legal: $ref: '#/definitions/schema.SiteLegalSimpleResp' + site_questions: + $ref: '#/definitions/schema.SiteQuestionsResp' + site_security: + $ref: '#/definitions/schema.SiteSecurityResp' site_seo: $ref: '#/definitions/schema.SiteSeoResp' + site_tags: + $ref: '#/definitions/schema.SiteTagsResp' site_users: $ref: '#/definitions/schema.SiteUsersResp' - site_write: - $ref: '#/definitions/schema.SiteWriteResp' theme: $ref: '#/definitions/schema.SiteThemeResp' + users_settings: + $ref: '#/definitions/schema.SiteUsersSettingsResp' version: type: string type: object schema.SiteInterfaceReq: properties: - default_avatar: - enum: - - system - - gravatar - type: string - gravatar_base_url: - type: string language: maxLength: 128 type: string @@ -2446,19 +2477,11 @@ definitions: maxLength: 128 type: string required: - - default_avatar - language - time_zone type: object - schema.SiteInterfaceResp: + schema.SiteInterfaceSettingsResp: properties: - default_avatar: - enum: - - system - - gravatar - type: string - gravatar_base_url: - type: string language: maxLength: 128 type: string @@ -2466,46 +2489,9 @@ definitions: maxLength: 128 type: string required: - - default_avatar - language - time_zone type: object - schema.SiteLegalReq: - properties: - external_content_display: - enum: - - always_display - - ask_before_display - type: string - privacy_policy_original_text: - type: string - privacy_policy_parsed_text: - type: string - terms_of_service_original_text: - type: string - terms_of_service_parsed_text: - type: string - required: - - external_content_display - type: object - schema.SiteLegalResp: - properties: - external_content_display: - enum: - - always_display - - ask_before_display - type: string - privacy_policy_original_text: - type: string - privacy_policy_parsed_text: - type: string - terms_of_service_original_text: - type: string - terms_of_service_parsed_text: - type: string - required: - - external_content_display - type: object schema.SiteLegalSimpleResp: properties: external_content_display: @@ -2528,8 +2514,6 @@ definitions: type: boolean allow_password_login: type: boolean - login_required: - type: boolean type: object schema.SiteLoginResp: properties: @@ -2543,8 +2527,6 @@ definitions: type: boolean allow_password_login: type: boolean - login_required: - type: boolean type: object schema.SiteMCPReq: properties: @@ -2562,6 +2544,82 @@ definitions: url: type: string type: object + schema.SitePoliciesReq: + properties: + privacy_policy_original_text: + type: string + privacy_policy_parsed_text: + type: string + terms_of_service_original_text: + type: string + terms_of_service_parsed_text: + type: string + type: object + schema.SitePoliciesResp: + properties: + privacy_policy_original_text: + type: string + privacy_policy_parsed_text: + type: string + terms_of_service_original_text: + type: string + terms_of_service_parsed_text: + type: string + type: object + schema.SiteQuestionsReq: + properties: + min_content: + maximum: 65535 + minimum: 0 + type: integer + min_tags: + maximum: 5 + minimum: 0 + type: integer + restrict_answer: + type: boolean + type: object + schema.SiteQuestionsResp: + properties: + min_content: + maximum: 65535 + minimum: 0 + type: integer + min_tags: + maximum: 5 + minimum: 0 + type: integer + restrict_answer: + type: boolean + type: object + schema.SiteSecurityReq: + properties: + check_update: + type: boolean + external_content_display: + enum: + - always_display + - ask_before_display + type: string + login_required: + type: boolean + required: + - external_content_display + type: object + schema.SiteSecurityResp: + properties: + check_update: + type: boolean + external_content_display: + enum: + - always_display + - ask_before_display + type: string + login_required: + type: boolean + required: + - external_content_display + type: object schema.SiteSeoReq: properties: permalink: @@ -2586,6 +2644,32 @@ definitions: - permalink - robots type: object + schema.SiteTagsReq: + properties: + recommend_tags: + items: + $ref: '#/definitions/schema.SiteWriteTag' + type: array + required_tag: + type: boolean + reserved_tags: + items: + $ref: '#/definitions/schema.SiteWriteTag' + type: array + type: object + schema.SiteTagsResp: + properties: + recommend_tags: + items: + $ref: '#/definitions/schema.SiteWriteTag' + type: array + required_tag: + type: boolean + reserved_tags: + items: + $ref: '#/definitions/schema.SiteWriteTag' + type: array + type: object schema.SiteThemeReq: properties: color_scheme: @@ -2669,79 +2753,29 @@ definitions: required: - default_avatar type: object - schema.SiteWriteReq: + schema.SiteUsersSettingsReq: properties: - authorized_attachment_extensions: - items: - type: string - type: array - authorized_image_extensions: - items: - type: string - type: array - max_attachment_size: - type: integer - max_image_megapixel: - type: integer - max_image_size: - type: integer - min_content: - maximum: 65535 - minimum: 0 - type: integer - min_tags: - maximum: 5 - minimum: 0 - type: integer - recommend_tags: - items: - $ref: '#/definitions/schema.SiteWriteTag' - type: array - required_tag: - type: boolean - reserved_tags: - items: - $ref: '#/definitions/schema.SiteWriteTag' - type: array - restrict_answer: - type: boolean + default_avatar: + enum: + - system + - gravatar + type: string + gravatar_base_url: + type: string + required: + - default_avatar type: object - schema.SiteWriteResp: + schema.SiteUsersSettingsResp: properties: - authorized_attachment_extensions: - items: - type: string - type: array - authorized_image_extensions: - items: - type: string - type: array - max_attachment_size: - type: integer - max_image_megapixel: - type: integer - max_image_size: - type: integer - min_content: - maximum: 65535 - minimum: 0 - type: integer - min_tags: - maximum: 5 - minimum: 0 - type: integer - recommend_tags: - items: - $ref: '#/definitions/schema.SiteWriteTag' - type: array - required_tag: - type: boolean - reserved_tags: - items: - $ref: '#/definitions/schema.SiteWriteTag' - type: array - restrict_answer: - type: boolean + default_avatar: + enum: + - system + - gravatar + type: string + gravatar_base_url: + type: string + required: + - default_avatar type: object schema.SiteWriteTag: properties: @@ -4253,6 +4287,47 @@ paths: summary: update smtp config tags: - admin + /answer/admin/api/siteinfo/advanced: + get: + description: get site advanced setting + produces: + - application/json + responses: + "200": + description: OK + schema: + allOf: + - $ref: '#/definitions/handler.RespBody' + - properties: + data: + $ref: '#/definitions/schema.SiteAdvancedResp' + type: object + security: + - ApiKeyAuth: [] + summary: get site advanced setting + tags: + - admin + put: + description: update site advanced info + parameters: + - description: advanced settings + in: body + name: data + required: true + schema: + $ref: '#/definitions/schema.SiteAdvancedReq' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/handler.RespBody' + security: + - ApiKeyAuth: [] + summary: update site advanced info + tags: + - admin /answer/admin/api/siteinfo/branding: get: description: get site interface @@ -4389,7 +4464,7 @@ paths: - $ref: '#/definitions/handler.RespBody' - properties: data: - $ref: '#/definitions/schema.SiteInterfaceResp' + $ref: '#/definitions/schema.SiteInterfaceSettingsResp' type: object security: - ApiKeyAuth: [] @@ -4417,9 +4492,50 @@ paths: summary: update site info interface tags: - admin - /answer/admin/api/siteinfo/legal: + /answer/admin/api/siteinfo/login: + get: + description: get site info login config + produces: + - application/json + responses: + "200": + description: OK + schema: + allOf: + - $ref: '#/definitions/handler.RespBody' + - properties: + data: + $ref: '#/definitions/schema.SiteLoginResp' + type: object + security: + - ApiKeyAuth: [] + summary: get site info login config + tags: + - admin + put: + description: update site login + parameters: + - description: login info + in: body + name: data + required: true + schema: + $ref: '#/definitions/schema.SiteLoginReq' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/handler.RespBody' + security: + - ApiKeyAuth: [] + summary: update site login + tags: + - admin + /answer/admin/api/siteinfo/polices: get: - description: Set the legal information for the site + description: Get the policies information for the site produces: - application/json responses: @@ -4430,22 +4546,22 @@ paths: - $ref: '#/definitions/handler.RespBody' - properties: data: - $ref: '#/definitions/schema.SiteLegalResp' + $ref: '#/definitions/schema.SitePoliciesResp' type: object security: - ApiKeyAuth: [] - summary: Set the legal information for the site + summary: Get the policies information for the site tags: - admin put: - description: update site legal info + description: update site policies configuration parameters: - description: write info in: body name: data required: true schema: - $ref: '#/definitions/schema.SiteLegalReq' + $ref: '#/definitions/schema.SitePoliciesReq' produces: - application/json responses: @@ -4455,12 +4571,12 @@ paths: $ref: '#/definitions/handler.RespBody' security: - ApiKeyAuth: [] - summary: update site legal info + summary: update site policies configuration tags: - admin - /answer/admin/api/siteinfo/login: + /answer/admin/api/siteinfo/question: get: - description: get site info login config + description: get site questions setting produces: - application/json responses: @@ -4471,22 +4587,22 @@ paths: - $ref: '#/definitions/handler.RespBody' - properties: data: - $ref: '#/definitions/schema.SiteLoginResp' + $ref: '#/definitions/schema.SiteQuestionsResp' type: object security: - ApiKeyAuth: [] - summary: get site info login config + summary: get site questions setting tags: - admin put: - description: update site login + description: update site question settings parameters: - - description: login info + - description: questions settings in: body name: data required: true schema: - $ref: '#/definitions/schema.SiteLoginReq' + $ref: '#/definitions/schema.SiteQuestionsReq' produces: - application/json responses: @@ -4496,7 +4612,48 @@ paths: $ref: '#/definitions/handler.RespBody' security: - ApiKeyAuth: [] - summary: update site login + summary: update site question settings + tags: + - admin + /answer/admin/api/siteinfo/security: + get: + description: Get the security information for the site + produces: + - application/json + responses: + "200": + description: OK + schema: + allOf: + - $ref: '#/definitions/handler.RespBody' + - properties: + data: + $ref: '#/definitions/schema.SiteSecurityResp' + type: object + security: + - ApiKeyAuth: [] + summary: Get the security information for the site + tags: + - admin + put: + description: update site security configuration + parameters: + - description: write info + in: body + name: data + required: true + schema: + $ref: '#/definitions/schema.SiteSecurityReq' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/handler.RespBody' + security: + - ApiKeyAuth: [] + summary: update site security configuration tags: - admin /answer/admin/api/siteinfo/seo: @@ -4540,6 +4697,47 @@ paths: summary: update site seo information tags: - admin + /answer/admin/api/siteinfo/tag: + get: + description: get site tags setting + produces: + - application/json + responses: + "200": + description: OK + schema: + allOf: + - $ref: '#/definitions/handler.RespBody' + - properties: + data: + $ref: '#/definitions/schema.SiteTagsResp' + type: object + security: + - ApiKeyAuth: [] + summary: get site tags setting + tags: + - admin + put: + description: update site tag settings + parameters: + - description: tags settings + in: body + name: data + required: true + schema: + $ref: '#/definitions/schema.SiteTagsReq' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/handler.RespBody' + security: + - ApiKeyAuth: [] + summary: update site tag settings + tags: + - admin /answer/admin/api/siteinfo/theme: get: description: get site info theme config @@ -4622,7 +4820,7 @@ paths: summary: update site info config about users tags: - admin - /answer/admin/api/siteinfo/write: + /answer/admin/api/siteinfo/users-settings: get: description: get site interface produces: @@ -4635,7 +4833,7 @@ paths: - $ref: '#/definitions/handler.RespBody' - properties: data: - $ref: '#/definitions/schema.SiteWriteResp' + $ref: '#/definitions/schema.SiteUsersSettingsResp' type: object security: - ApiKeyAuth: [] @@ -4643,14 +4841,14 @@ paths: tags: - admin put: - description: update site write info + description: update site info users settings parameters: - - description: write info + - description: general in: body name: data required: true schema: - $ref: '#/definitions/schema.SiteWriteReq' + $ref: '#/definitions/schema.SiteUsersSettingsReq' produces: - application/json responses: @@ -4660,7 +4858,7 @@ paths: $ref: '#/definitions/handler.RespBody' security: - ApiKeyAuth: [] - summary: update site write info + summary: update site info users settings tags: - admin /answer/admin/api/theme/options: diff --git a/internal/migrations/v32.go b/internal/migrations/v32.go deleted file mode 100644 index 89b97047..00000000 --- a/internal/migrations/v32.go +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package migrations - -import ( - "context" - "encoding/json" - "fmt" - - "github.com/apache/answer/internal/base/constant" - "github.com/apache/answer/internal/entity" - "github.com/apache/answer/internal/schema" - "github.com/segmentfault/pacman/log" - "xorm.io/xorm" -) - -func aiFeat(ctx context.Context, x *xorm.Engine) error { - if err := addAIConversationTables(ctx, x); err != nil { - return fmt.Errorf("add ai conversation tables failed: %w", err) - } - if err := addAPIKey(ctx, x); err != nil { - return fmt.Errorf("add api key failed: %w", err) - } - log.Info("AI feature migration completed successfully") - return nil -} - -func addAIConversationTables(ctx context.Context, x *xorm.Engine) error { - if err := x.Context(ctx).Sync(new(entity.AIConversation)); err != nil { - return fmt.Errorf("sync ai_conversation table failed: %w", err) - } - - if err := x.Context(ctx).Sync(new(entity.AIConversationRecord)); err != nil { - return fmt.Errorf("sync ai_conversation_record table failed: %w", err) - } - - return nil -} - -func addAPIKey(ctx context.Context, x *xorm.Engine) error { - err := x.Context(ctx).Sync(new(entity.APIKey)) - if err != nil { - return err - } - - defaultConfigTable := []*entity.Config{ - {ID: 10000, Key: "ai_config.provider", Value: `[{"default_api_host":"https://api.openai.com","display_name":"OpenAI","name":"openai"},{"default_api_host":"https://generativelanguage.googleapis.com","display_name":"Gemini","name":"gemini"},{"default_api_host":"https://api.anthropic.com","display_name":"Anthropic","name":"anthropic"}]`}, - } - for _, c := range defaultConfigTable { - exist, err := x.Context(ctx).Get(&entity.Config{Key: c.Key}) - if err != nil { - return fmt.Errorf("get config failed: %w", err) - } - if exist { - continue - } - if _, err = x.Context(ctx).Insert(&entity.Config{ID: c.ID, Key: c.Key, Value: c.Value}); err != nil { - log.Errorf("insert %+v config failed: %s", c, err) - return fmt.Errorf("add config failed: %w", err) - } - } - - aiSiteInfo := &entity.SiteInfo{ - Type: constant.SiteTypeAI, - } - exist, err := x.Context(ctx).Get(aiSiteInfo) - if err != nil { - return fmt.Errorf("get config failed: %w", err) - } - if exist { - content := &schema.SiteAIReq{} - _ = json.Unmarshal([]byte(aiSiteInfo.Content), content) - content.PromptConfig = &schema.AIPromptConfig{ - ZhCN: constant.DefaultAIPromptConfigZhCN, - EnUS: constant.DefaultAIPromptConfigEnUS, - } - data, _ := json.Marshal(content) - aiSiteInfo.Content = string(data) - _, err = x.Context(ctx).ID(aiSiteInfo.ID).Cols("content").Update(aiSiteInfo) - if err != nil { - return fmt.Errorf("update site info failed: %w", err) - } - } else { - content := &schema.SiteAIReq{ - PromptConfig: &schema.AIPromptConfig{ - ZhCN: constant.DefaultAIPromptConfigZhCN, - EnUS: constant.DefaultAIPromptConfigEnUS, - }, - } - data, _ := json.Marshal(content) - aiSiteInfo.Content = string(data) - aiSiteInfo.Type = constant.SiteTypeAI - if _, err = x.Context(ctx).Insert(aiSiteInfo); err != nil { - return fmt.Errorf("insert site info failed: %w", err) - } - log.Infof("insert site info %+v", aiSiteInfo) - } - return nil -}
