slug and shortId conversion functions
This commit is contained in:
parent
5c8817aa2a
commit
adaf6cf87d
@ -2,73 +2,68 @@ package models
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Guestbook struct {
|
||||
ID int64
|
||||
ShortId uint64
|
||||
SiteUrl string
|
||||
UserId int64
|
||||
Created time.Time
|
||||
IsDeleted bool
|
||||
IsActive bool
|
||||
}
|
||||
|
||||
func (gb Guestbook) Slug() string {
|
||||
return strconv.FormatUint(gb.ShortId, 36)
|
||||
ID int64
|
||||
ShortId uint64
|
||||
SiteUrl string
|
||||
UserId int64
|
||||
Created time.Time
|
||||
IsDeleted bool
|
||||
IsActive bool
|
||||
}
|
||||
|
||||
type GuestbookModel struct {
|
||||
DB *sql.DB
|
||||
DB *sql.DB
|
||||
}
|
||||
|
||||
func (m *GuestbookModel) Insert(shortId uint64, siteUrl string, userId int64) (int64, error) {
|
||||
stmt := `INSERT INTO guestbooks (ShortId, SiteUrl, UserId, Created, IsDeleted, IsActive)
|
||||
stmt := `INSERT INTO guestbooks (ShortId, SiteUrl, UserId, Created, IsDeleted, IsActive)
|
||||
VALUES(?, ?, ?, ?, FALSE, TRUE)`
|
||||
result, err := m.DB.Exec(stmt, shortId, siteUrl, userId, time.Now().UTC())
|
||||
if err != nil {
|
||||
return -1, err
|
||||
}
|
||||
id, err := result.LastInsertId()
|
||||
if err != nil {
|
||||
return -1, err
|
||||
}
|
||||
return id, nil
|
||||
result, err := m.DB.Exec(stmt, shortId, siteUrl, userId, time.Now().UTC())
|
||||
if err != nil {
|
||||
return -1, err
|
||||
}
|
||||
id, err := result.LastInsertId()
|
||||
if err != nil {
|
||||
return -1, err
|
||||
}
|
||||
return id, nil
|
||||
}
|
||||
|
||||
func (m *GuestbookModel) Get(shortId uint64) (Guestbook, error) {
|
||||
stmt := `SELECT Id, ShortId, SiteUrl, UserId, Created, IsDeleted, IsActive FROM guestbooks
|
||||
stmt := `SELECT Id, ShortId, SiteUrl, UserId, Created, IsDeleted, IsActive FROM guestbooks
|
||||
WHERE ShortId = ?`
|
||||
row := m.DB.QueryRow(stmt, shortId)
|
||||
var g Guestbook
|
||||
err := row.Scan(&g.ID, &g.ShortId, &g.SiteUrl, &g.UserId, &g.Created, &g.IsDeleted, &g.IsActive)
|
||||
if err != nil {
|
||||
return Guestbook{}, err
|
||||
}
|
||||
|
||||
return g, nil
|
||||
row := m.DB.QueryRow(stmt, shortId)
|
||||
var g Guestbook
|
||||
err := row.Scan(&g.ID, &g.ShortId, &g.SiteUrl, &g.UserId, &g.Created, &g.IsDeleted, &g.IsActive)
|
||||
if err != nil {
|
||||
return Guestbook{}, err
|
||||
}
|
||||
|
||||
return g, nil
|
||||
}
|
||||
|
||||
func (m *GuestbookModel) GetAll(userId int64) ([]Guestbook, error) {
|
||||
stmt := `SELECT Id, ShortId, SiteUrl, UserId, Created, IsDeleted, IsActive FROM guestbooks
|
||||
stmt := `SELECT Id, ShortId, SiteUrl, UserId, Created, IsDeleted, IsActive FROM guestbooks
|
||||
WHERE UserId = ?`
|
||||
rows, err := m.DB.Query(stmt, userId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var guestbooks []Guestbook
|
||||
for rows.Next() {
|
||||
var g Guestbook
|
||||
err = rows.Scan(&g.ID, &g.ShortId, &g.SiteUrl, &g.UserId, &g.Created, &g.IsDeleted, &g.IsActive)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
guestbooks = append(guestbooks, g)
|
||||
}
|
||||
if err = rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return guestbooks, nil
|
||||
rows, err := m.DB.Query(stmt, userId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var guestbooks []Guestbook
|
||||
for rows.Next() {
|
||||
var g Guestbook
|
||||
err = rows.Scan(&g.ID, &g.ShortId, &g.SiteUrl, &g.UserId, &g.Created, &g.IsDeleted, &g.IsActive)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
guestbooks = append(guestbooks, g)
|
||||
}
|
||||
if err = rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return guestbooks, nil
|
||||
}
|
||||
|
@ -12,6 +12,10 @@ type CommonData struct {
|
||||
IsHtmx bool
|
||||
}
|
||||
|
||||
func shortIdToSlug(shortId uint64) string {
|
||||
return strconv.FormatUint(shortId, 36)
|
||||
}
|
||||
|
||||
func slugToShortId(slug string) uint64 {
|
||||
id, _ := strconv.ParseUint(slug, 36, 64)
|
||||
return id
|
||||
|
@ -20,6 +20,10 @@ type CommonData struct {
|
||||
IsHtmx bool
|
||||
}
|
||||
|
||||
func shortIdToSlug(shortId uint64) string {
|
||||
return strconv.FormatUint(shortId, 36)
|
||||
}
|
||||
|
||||
func slugToShortId(slug string) uint64 {
|
||||
id, _ := strconv.ParseUint(slug, 36, 64)
|
||||
return id
|
||||
@ -87,7 +91,7 @@ func topNav(data CommonData) templ.Component {
|
||||
var templ_7745c5c3_Var3 string
|
||||
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(data.CurrentUser.Username)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/common.templ`, Line: 36, Col: 52}
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/common.templ`, Line: 40, Col: 52}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
@ -100,7 +104,7 @@ func topNav(data CommonData) templ.Component {
|
||||
var templ_7745c5c3_Var4 string
|
||||
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(data.CSRFToken)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/common.templ`, Line: 39, Col: 81}
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/common.templ`, Line: 43, Col: 81}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
@ -181,7 +185,7 @@ func base(title string, data CommonData) templ.Component {
|
||||
var templ_7745c5c3_Var7 string
|
||||
templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(title)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/common.templ`, Line: 62, Col: 26}
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/common.templ`, Line: 66, Col: 26}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
@ -211,7 +215,7 @@ func base(title string, data CommonData) templ.Component {
|
||||
var templ_7745c5c3_Var8 string
|
||||
templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(data.Flash)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/common.templ`, Line: 73, Col: 51}
|
||||
return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/common.templ`, Line: 77, Col: 51}
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8))
|
||||
if templ_7745c5c3_Err != nil {
|
||||
|
@ -5,7 +5,7 @@ import "git.32bit.cafe/32bitcafe/guestbook/internal/models"
|
||||
import "git.32bit.cafe/32bitcafe/guestbook/internal/forms"
|
||||
|
||||
func gbUrl(gb models.Guestbook) string {
|
||||
return fmt.Sprintf("/guestbooks/%s", gb.Slug())
|
||||
return fmt.Sprintf("/guestbooks/%s", shortIdToSlug(gb.ShortId))
|
||||
}
|
||||
|
||||
templ gbCreateForm(csrf_token string) {
|
||||
@ -130,7 +130,7 @@ templ GuestbookDashboardCommentsView(title string, data CommonData, guestbook mo
|
||||
}
|
||||
|
||||
templ commentForm(data CommonData, gb models.Guestbook, form forms.CommentCreateForm) {
|
||||
{{ postUrl := fmt.Sprintf("/guestbooks/%s/comments/create", gb.Slug()) }}
|
||||
{{ postUrl := fmt.Sprintf("/guestbooks/%s/comments/create", shortIdToSlug(gb.ShortId)) }}
|
||||
<form action={ templ.URL(postUrl) } method="post">
|
||||
<input type="hidden" name="csrf_token" value={data.CSRFToken}>
|
||||
<div>
|
||||
|
@ -13,7 +13,7 @@ import "git.32bit.cafe/32bitcafe/guestbook/internal/models"
|
||||
import "git.32bit.cafe/32bitcafe/guestbook/internal/forms"
|
||||
|
||||
func gbUrl(gb models.Guestbook) string {
|
||||
return fmt.Sprintf("/guestbooks/%s", gb.Slug())
|
||||
return fmt.Sprintf("/guestbooks/%s", shortIdToSlug(gb.ShortId))
|
||||
}
|
||||
|
||||
func gbCreateForm(csrf_token string) templ.Component {
|
||||
@ -575,7 +575,7 @@ func commentForm(data CommonData, gb models.Guestbook, form forms.CommentCreateF
|
||||
templ_7745c5c3_Var28 = templ.NopComponent
|
||||
}
|
||||
ctx = templ.ClearChildren(ctx)
|
||||
postUrl := fmt.Sprintf("/guestbooks/%s/comments/create", gb.Slug())
|
||||
postUrl := fmt.Sprintf("/guestbooks/%s/comments/create", shortIdToSlug(gb.ShortId))
|
||||
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "<form action=\"")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
|
Loading…
x
Reference in New Issue
Block a user