Merge branch 'master' of gitssh.handmade.network:hmn/hmn

This commit is contained in:
Asaf Gartner 2021-04-26 09:57:09 +03:00
commit 17e35bf557
4 changed files with 65 additions and 19 deletions

8
resetdb.sh Normal file → Executable file
View File

@ -1,5 +1,7 @@
#!/bin/bash
set -eou pipefail
# This script is for use in local development only. It wipes the existing db,
# creates a new empty one, runs the initial migration to create the schema,
# and then imports actual db content on top of that.
@ -7,7 +9,8 @@
# TODO(opensource): We should adapt Asaf's seedfile command and then delete this.
THIS_PATH=$(pwd)
BETA_PATH='/mnt/c/Users/bvisn/Developer/handmade/handmade-beta'
#BETA_PATH='/mnt/c/Users/bvisn/Developer/handmade/handmade-beta'
BETA_PATH='/Users/benvisness/Developer/handmade/handmade-beta'
cd $BETA_PATH
docker-compose down -v
@ -19,4 +22,5 @@ cd $THIS_PATH
go run src/main.go migrate 2021-03-10T05:16:21Z
cd $BETA_PATH
./scripts/db_import -d -n hmn_two -a ./dbdumps/hmn_pg_dump_2020-11-10
#./scripts/db_import -d -n hmn_two -a ./dbdumps/hmn_pg_dump_2020-11-10
./scripts/db_import -d -n hmn_two -a ./dbdumps/hmn_pg_dump_2021-04-25

View File

@ -4,6 +4,7 @@ import (
"context"
"git.handmade.network/hmn/hmn/src/db"
"git.handmade.network/hmn/hmn/src/hmnurl"
"github.com/jackc/pgx/v4/pgxpool"
)
@ -22,18 +23,23 @@ type Category struct {
ID int `db:"id"`
ParentID *int `db:"parent_id"`
ProjectID *int `db:"project_id"`
ProjectID *int `db:"project_id"` // TODO: Make not null
Slug *string `db:"slug"`
Name *string `db:"name"`
Blurb *string `db:"blurb"`
Slug *string `db:"slug"` // TODO: Make not null
Name *string `db:"name"` // TODO: Make not null
Blurb *string `db:"blurb"` // TODO: Make not null
Kind CategoryType `db:"kind"`
Color1 string `db:"color_1"`
Color2 string `db:"color_2"`
Depth int `db:"depth"` // TODO: What is this?
}
func (c *Category) GetParents(ctx context.Context, conn *pgxpool.Pool) []Category {
/*
Gets the category and its parent categories, starting from the root and working toward the
category itself. Useful for breadcrumbs and the like.
*/
func (c *Category) GetHierarchy(ctx context.Context, conn *pgxpool.Pool) []Category {
// TODO: Make this work for a whole set of categories at once. Should be doable.
type breadcrumbRow struct {
Cat Category `db:"cats"`
}
@ -57,23 +63,58 @@ func (c *Category) GetParents(ctx context.Context, conn *pgxpool.Pool) []Categor
panic(err)
}
rowsSlice := rows.ToSlice()
var result []Category
for _, irow := range rows.ToSlice()[1:] {
row := irow.(*breadcrumbRow)
for i := len(rowsSlice) - 1; i >= 0; i-- {
row := rowsSlice[i].(*breadcrumbRow)
result = append(result, row.Cat)
}
return result
}
// func GetCategoryUrls(cats ...*Category) map[int]string {
func GetCategoryUrls(ctx context.Context, conn *pgxpool.Pool, cats ...*Category) map[int]string {
var projectIds []int
for _, cat := range cats {
id := *cat.ProjectID
// }
alreadyInList := false
for _, otherId := range projectIds {
if otherId == id {
alreadyInList = true
break
}
}
// func makeCategoryUrl(cat *Category, subdomain string) string {
// switch cat.Kind {
// case CatTypeBlog:
// case CatTypeForum:
// }
// return hmnurl.ProjectUrl("/flooger", nil, subdomain)
// }
if !alreadyInList {
projectIds = append(projectIds, id)
}
}
// TODO(inarray)!!!!!
for _, cat := range cats {
hierarchy := makeCategoryUrl(cat.GetHierarchy(ctx, conn))
}
}
func makeCategoryUrl(cats []*Category, subdomain string) string {
path := ""
for i, cat := range cats {
if i == 0 {
switch cat.Kind {
case CatTypeBlog:
path += "/blogs"
case CatTypeForum:
path += "/forums"
// TODO: All cat types?
default:
return ""
}
} else {
path += "/" + *cat.Slug
}
}
return hmnurl.ProjectUrl(path, nil, subdomain)
}

View File

@ -1,3 +1,4 @@
{{- /*gotype: git.handmade.network/hmn/hmn/src/templates.Pagination*/ -}}
<div class="pagination">
{{ if gt .Current 1 }}
<a class="button" href="{{ .PreviousUrl }}">Prev</a>

View File

@ -131,7 +131,7 @@ func Feed(c *RequestContext) ResponseData {
hasRead = true
}
parents := postResult.Cat.GetParents(c.Context(), c.Conn)
parents := postResult.Cat.GetHierarchy(c.Context(), c.Conn)
logging.Debug().Interface("parents", parents).Msg("")
var breadcrumbs []templates.Breadcrumb