This is an automated email from the ASF dual-hosted git repository. shuai pushed a commit to branch dev in repository https://gitbox.apache.org/repos/asf/answer.git
commit c78cadb159deaa7c3cc14d96edcbbae781427bb8 Author: Dinesht04 <[email protected]> AuthorDate: Tue Oct 14 02:43:47 2025 +0530 add migration for min_tags --- internal/migrations/migrations.go | 1 + internal/migrations/v28.go | 67 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) diff --git a/internal/migrations/migrations.go b/internal/migrations/migrations.go index 4b5335b0..9caa28ed 100644 --- a/internal/migrations/migrations.go +++ b/internal/migrations/migrations.go @@ -103,6 +103,7 @@ var migrations = []Migration{ NewMigration("v1.4.5", "add file record", addFileRecord, true), NewMigration("v1.5.1", "add plugin kv storage", addPluginKVStorage, true), NewMigration("v1.6.0", "move user config to interface", moveUserConfigToInterface, true), + NewMigration("v1.7.0", "add optional tags", addOptionalTags, true), } func GetMigrations() []Migration { diff --git a/internal/migrations/v28.go b/internal/migrations/v28.go new file mode 100644 index 00000000..8b834afa --- /dev/null +++ b/internal/migrations/v28.go @@ -0,0 +1,67 @@ +/* + * 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" + + "xorm.io/xorm" +) + +func addOptionalTags(ctx context.Context, x *xorm.Engine) error { + writeSiteInfo := &entity.SiteInfo{ + Type: constant.SiteTypeWrite, + } + exist, err := x.Context(ctx).Get(writeSiteInfo) + if err != nil { + return fmt.Errorf("get config failed: %w", err) + } + if exist { + type OldSiteWriteReq struct { + RestrictAnswer bool `json:"restrict_answer"` + MinimumTags int `json:"min_tags"` + RequiredTag bool `json:"required_tag"` + RecommendTags []*schema.SiteWriteTag `json:"recommend_tags"` + ReservedTags []*schema.SiteWriteTag `json:"reserved_tags"` + MaxImageSize int `json:"max_image_size"` + MaxAttachmentSize int `json:"max_attachment_size"` + MaxImageMegapixel int `json:"max_image_megapixel"` + AuthorizedImageExtensions []string `json:"authorized_image_extensions"` + AuthorizedAttachmentExtensions []string `json:"authorized_attachment_extensions"` + } + content := &OldSiteWriteReq{} + _ = json.Unmarshal([]byte(writeSiteInfo.Content), content) + content.MinimumTags = 1 + data, _ := json.Marshal(content) + writeSiteInfo.Content = string(data) + _, err = x.Context(ctx).ID(writeSiteInfo.ID).Cols("content").Update(writeSiteInfo) + if err != nil { + return fmt.Errorf("update site info failed: %w", err) + } + } + + return nil +}
