mirror of
https://github.com/grafana/grafana.git
synced 2025-02-15 01:53:33 -06:00
106 lines
2.0 KiB
Go
106 lines
2.0 KiB
Go
package commentmodel
|
|
|
|
import (
|
|
"database/sql"
|
|
"database/sql/driver"
|
|
"encoding/json"
|
|
"fmt"
|
|
)
|
|
|
|
const (
|
|
// ObjectTypeOrg is reserved for future use for per-org comments.
|
|
ObjectTypeOrg = "org"
|
|
// ObjectTypeDashboard used for dashboard-wide comments.
|
|
ObjectTypeDashboard = "dashboard"
|
|
// ObjectTypeAnnotation used for annotation comments.
|
|
ObjectTypeAnnotation = "annotation"
|
|
)
|
|
|
|
var RegisteredObjectTypes = map[string]struct{}{
|
|
ObjectTypeOrg: {},
|
|
ObjectTypeDashboard: {},
|
|
ObjectTypeAnnotation: {},
|
|
}
|
|
|
|
type CommentGroup struct {
|
|
Id int64
|
|
OrgId int64
|
|
ObjectType string
|
|
ObjectId string
|
|
Settings Settings
|
|
|
|
Created int64
|
|
Updated int64
|
|
}
|
|
|
|
func (i CommentGroup) TableName() string {
|
|
return "comment_group"
|
|
}
|
|
|
|
type Settings struct {
|
|
}
|
|
|
|
var (
|
|
_ driver.Valuer = Settings{}
|
|
_ sql.Scanner = &Settings{}
|
|
)
|
|
|
|
func (s Settings) Value() (driver.Value, error) {
|
|
d, err := json.Marshal(s)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return string(d), nil
|
|
}
|
|
|
|
func (s *Settings) Scan(value interface{}) error {
|
|
switch v := value.(type) {
|
|
case string:
|
|
return json.Unmarshal([]byte(v), s)
|
|
case []uint8:
|
|
return json.Unmarshal(v, s)
|
|
default:
|
|
return fmt.Errorf("type assertion on scan failed: got %T", value)
|
|
}
|
|
}
|
|
|
|
type Comment struct {
|
|
Id int64
|
|
GroupId int64
|
|
UserId int64
|
|
Content string
|
|
|
|
Created int64
|
|
Updated int64
|
|
}
|
|
|
|
type CommentUser struct {
|
|
Id int64 `json:"id"`
|
|
Name string `json:"name"`
|
|
Login string `json:"login"`
|
|
Email string `json:"email"`
|
|
AvatarUrl string `json:"avatarUrl"`
|
|
}
|
|
|
|
type CommentDto struct {
|
|
Id int64 `json:"id"`
|
|
UserId int64 `json:"userId"`
|
|
Content string `json:"content"`
|
|
Created int64 `json:"created"`
|
|
User *CommentUser `json:"user,omitempty"`
|
|
}
|
|
|
|
func (i Comment) ToDTO(user *CommentUser) *CommentDto {
|
|
return &CommentDto{
|
|
Id: i.Id,
|
|
UserId: i.UserId,
|
|
Content: i.Content,
|
|
Created: i.Created,
|
|
User: user,
|
|
}
|
|
}
|
|
|
|
func (i Comment) TableName() string {
|
|
return "comment"
|
|
}
|