reprogl

Форк
0
/
models.go 
129 строк · 2.0 Кб
1
package models
2

3
import (
4
	"database/sql"
5
	"errors"
6
	"strconv"
7
	"strings"
8
	"time"
9
)
10

11
var RecordNotFound = errors.New("models: no matching record found")
12

13
const (
14
	DisabledComments = "d"
15
	EnabledComments  = "e"
16
)
17

18
type ArticleBasePart struct {
19
	ID           int
20
	Title        string
21
	Slug         string
22
	Text         string
23
	Preview      string
24
	CreatedAt    time.Time
25
	UpdatedAt    time.Time
26
	CategoryName string
27
	CategorySlug string
28
	Hidden       bool
29

30
	CommentsCount int
31
}
32

33
type Article struct {
34
	ArticleBasePart
35
	Description sql.NullString
36
	FeaturedImage
37
	Tags TagList
38

39
	DisabledComments bool
40
	RecentPostsID    string
41
	Views            int
42
}
43

44
type ArticleListItem struct {
45
	ArticleBasePart
46
	FeaturedImage
47
	Tags TagList
48
}
49

50
type ArticleList []*ArticleListItem
51

52
type Category struct {
53
	ID       int
54
	Name     string
55
	Slug     string
56
	LeftKey  sql.NullInt64
57
	RightKey sql.NullInt64
58
	Depth    int
59
}
60

61
type CategoryList []*Category
62

63
type Tag struct {
64
	ID   int
65
	Name string
66
	Slug string
67
}
68

69
type TagList []*Tag
70

71
type RecentPost struct {
72
	Title string
73
	Slug  string
74
}
75

76
type RecentPostList []*RecentPost
77

78
type ArticleForComment struct {
79
	ID     int
80
	Slug   string
81
	Hidden bool
82
}
83

84
func (cat *Category) HeaderLineDescription() string {
85
	return "Записи из категории"
86
}
87

88
func (cat *Category) HeaderLineText() string {
89
	return cat.Name
90
}
91

92
func (cat *Category) NameWithTreePrefix() string {
93
	var prefix string
94
	if cat.Depth > 1 {
95
		prefix = strings.Repeat("..", cat.Depth-1)
96
	}
97

98
	return prefix + cat.Name
99
}
100

101
func (tag *Tag) HeaderLineDescription() string {
102
	return "Записи с отметкой"
103
}
104

105
func (tag *Tag) HeaderLineText() string {
106
	return tag.Name
107
}
108

109
func (a *ArticleBasePart) HasPreview() bool {
110
	return strings.Contains(a.Text, "<!-- cut -->")
111
}
112

113
func (a *ArticleBasePart) IdString() string {
114
	return strconv.Itoa(a.ID)
115
}
116

117
func (a *ArticleBasePart) IsArticle() bool {
118
	return true
119
}
120

121
func (a *Article) DisabledCommentsFlag() (flag string) {
122
	if a.DisabledComments {
123
		flag = DisabledComments
124
	} else {
125
		flag = EnabledComments
126
	}
127

128
	return
129
}
130

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.