internal/schema/badge_schema.go (90 lines of code) (raw):
/*
* 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 schema
import "github.com/apache/answer/internal/entity"
const (
BadgeStatusActive BadgeStatus = "active"
BadgeStatusInactive BadgeStatus = "inactive"
)
type BadgeStatus string
var BadgeStatusMap = map[int8]BadgeStatus{
entity.BadgeStatusActive: BadgeStatusActive,
entity.BadgeStatusInactive: BadgeStatusInactive,
}
var BadgeStatusEMap = map[BadgeStatus]int8{
BadgeStatusActive: entity.BadgeStatusActive,
BadgeStatusInactive: entity.BadgeStatusInactive,
}
// BadgeListInfo get badge list response
type BadgeListInfo struct {
// badge id
ID string `json:"id" `
// badge name
Name string `json:"name" `
// badge icon
Icon string `json:"icon" `
// badge award count
AwardCount int `json:"award_count" `
// badge earned count
EarnedCount int64 `json:"earned_count" `
// badge level
Level entity.BadgeLevel `json:"level" `
}
type GetBadgeListResp struct {
// badge list info
Badges []*BadgeListInfo `json:"badges" `
// badge group name
GroupName string `json:"group_name" `
}
type UpdateBadgeStatusReq struct {
// badge id
ID string `validate:"required" json:"id"`
// badge status
Status BadgeStatus `validate:"required" json:"status"`
}
type GetBadgeListPagedReq struct {
// page
Page int `validate:"omitempty,min=1" form:"page"`
// page size
PageSize int `validate:"omitempty,min=1" form:"page_size"`
// badge status
Status BadgeStatus `validate:"omitempty" form:"status"`
// query condition
Query string `validate:"omitempty" form:"q"`
}
type GetBadgeListPagedResp struct {
// badge id
ID string `json:"id" `
// badge name
Name string `json:"name" `
// badge description
Description string `json:"description" `
// badge icon
Icon string `json:"icon" `
// badge award count
AwardCount int `json:"award_count" `
// badge earned count
Earned bool `json:"earned" `
// badge level
Level entity.BadgeLevel `json:"level" `
// badge group name
GroupName string `json:"group_name" `
// badge status
Status BadgeStatus `json:"status"`
}
type GetBadgeInfoResp struct {
// badge id
ID string `json:"id" `
// badge name
Name string `json:"name" `
// badge description
Description string `json:"description" `
// badge icon
Icon string `json:"icon" `
// badge award count
AwardCount int `json:"award_count" `
// badge earned count
EarnedCount int64 `json:"earned_count" `
// badge is single or multiple
IsSingle bool `json:"is_single" `
// badge level
Level entity.BadgeLevel `json:"level" `
}
type GetBadgeAwardWithPageReq struct {
// page
Page int `validate:"omitempty,min=1" form:"page"`
// page size
PageSize int `validate:"omitempty,min=1" form:"page_size"`
// badge id
BadgeID string `validate:"required" form:"badge_id"`
// username
Username string `validate:"omitempty,gt=0,lte=100" form:"username"`
// user id
UserID string `json:"-"`
}
type GetBadgeAwardWithPageResp struct {
// created time
CreatedAt int64 `json:"created_at"`
// object id
ObjectID string `json:"object_id"`
// question id
QuestionID string `json:"question_id"`
// answer id
AnswerID string `json:"answer_id"`
// comment id
CommentID string `json:"comment_id"`
// object type
ObjectType string `json:"object_type" enums:"question,answer,comment"`
// url title
UrlTitle string `json:"url_title"`
// author user info
AuthorUserInfo UserBasicInfo `json:"author_user_info"`
}
type GetUserBadgeAwardListReq struct {
// username
Username string `validate:"required,gt=0,lte=100" form:"username"`
// user id
UserID string `json:"-"`
Limit int `json:"-"`
}
type GetUserBadgeAwardListResp struct {
// badge id
ID string `json:"id" `
// badge name
Name string `json:"name" `
// badge icon
Icon string `json:"icon" `
// badge award count
EarnedCount int64 `json:"earned_count" `
// badge level
Level entity.BadgeLevel `json:"level" `
}
type BadgeTplData struct {
ProfileURL string
}