68 lines
1.6 KiB
Go
68 lines
1.6 KiB
Go
package benchmarks
|
||
|
||
import (
|
||
"html/template"
|
||
"math/rand"
|
||
"strings"
|
||
"time"
|
||
)
|
||
|
||
var globalStringList = []string{"#Aiogram", "#Go", "#JS", "#Windows", "#Анонимность",
|
||
"#Апдейт", "#Ассемблер", "#Веб", "#Идеи", "#Книги", "#Музыка", "#Находки",
|
||
"#Нейросети", "#ООП", "#Осайте", "#Прога", "#Си", "#Фронтенд"}
|
||
|
||
var randGen = rand.New(rand.NewSource(time.Now().UnixNano()))
|
||
|
||
// Структура поста
|
||
type Post struct {
|
||
ID int
|
||
Author string
|
||
Title string
|
||
Body template.HTML
|
||
PostingTime string
|
||
UpdateTime string
|
||
Tags string
|
||
Lock int
|
||
}
|
||
|
||
type Posts []Post
|
||
|
||
// random 5 tags for post
|
||
func tag5() string {
|
||
return globalStringList[randGen.Intn(len(globalStringList))] + " " +
|
||
globalStringList[randGen.Intn(len(globalStringList))] + " " +
|
||
globalStringList[randGen.Intn(len(globalStringList))] + " " +
|
||
globalStringList[randGen.Intn(len(globalStringList))] + " " +
|
||
globalStringList[randGen.Intn(len(globalStringList))]
|
||
}
|
||
|
||
func generatePostsList() Posts {
|
||
var p Posts
|
||
for i := 0; i < 100; i++ {
|
||
p = append(p, GetLargePost())
|
||
}
|
||
return p
|
||
}
|
||
|
||
// generate big post
|
||
func GetLargePost() Post {
|
||
author := "admin"
|
||
title := "A Comprehensive Guide to Go Programming Language"
|
||
body := strings.Repeat("REPEAT ME", 500)
|
||
postingTime := time.Now().Format("2006-01-02 15:04:05")
|
||
updateTime := postingTime
|
||
tags := tag5()
|
||
lock := 0
|
||
|
||
return Post{
|
||
ID: 1,
|
||
Author: author,
|
||
Title: title,
|
||
Body: template.HTML(body),
|
||
PostingTime: postingTime,
|
||
UpdateTime: updateTime,
|
||
Tags: tags,
|
||
Lock: lock,
|
||
}
|
||
}
|