mirror of
https://github.com/osmarks/mycorrhiza.git
synced 2025-01-09 03:00:25 +00:00
Categories: Draft the API for categories package
This commit is contained in:
parent
72cbca926c
commit
94fa2e5688
@ -15,6 +15,7 @@ var paths struct {
|
|||||||
configPath string
|
configPath string
|
||||||
tokensJSON string
|
tokensJSON string
|
||||||
userCredentialsJSON string
|
userCredentialsJSON string
|
||||||
|
categoriesJSON string
|
||||||
}
|
}
|
||||||
|
|
||||||
// HyphaeDir returns the path to hyphae storage.
|
// HyphaeDir returns the path to hyphae storage.
|
||||||
@ -38,6 +39,9 @@ func TokensJSON() string { return paths.tokensJSON }
|
|||||||
// UserCredentialsJSON returns the path to the JSON user credentials storage.
|
// UserCredentialsJSON returns the path to the JSON user credentials storage.
|
||||||
func UserCredentialsJSON() string { return paths.userCredentialsJSON }
|
func UserCredentialsJSON() string { return paths.userCredentialsJSON }
|
||||||
|
|
||||||
|
// CategoriesJSON returns the path to the JSON categories storage.
|
||||||
|
func CategoriesJSON() string { return paths.categoriesJSON }
|
||||||
|
|
||||||
// FileInRoot returns full path for the given filename if it was placed in the root of the wiki structure.
|
// FileInRoot returns full path for the given filename if it was placed in the root of the wiki structure.
|
||||||
func FileInRoot(filename string) string { return filepath.Join(cfg.WikiDir, filename) }
|
func FileInRoot(filename string) string { return filepath.Join(cfg.WikiDir, filename) }
|
||||||
|
|
||||||
@ -67,6 +71,7 @@ func PrepareWikiRoot() error {
|
|||||||
paths.userCredentialsJSON = filepath.Join(cfg.WikiDir, "users.json")
|
paths.userCredentialsJSON = filepath.Join(cfg.WikiDir, "users.json")
|
||||||
|
|
||||||
paths.tokensJSON = filepath.Join(paths.cacheDir, "tokens.json")
|
paths.tokensJSON = filepath.Join(paths.cacheDir, "tokens.json")
|
||||||
|
paths.categoriesJSON = filepath.Join(cfg.WikiDir, "tags.json")
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
44
hyphae/categories/tags.go
Normal file
44
hyphae/categories/tags.go
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
// Package categories provides category management.
|
||||||
|
//
|
||||||
|
// As per the long pondering, this is how categories (cats for short)
|
||||||
|
// work in Mycorrhiza:
|
||||||
|
//
|
||||||
|
// - Cats are not hyphae. Cats are separate entities. This is not as
|
||||||
|
// vibeful as I would have wanted, but seems to be more practical
|
||||||
|
// due to //the reasons//.
|
||||||
|
// - Cats are stored outside of git. Instead, they are stored in a
|
||||||
|
// JSON file, path to which is determined by files.CategoriesJSON.
|
||||||
|
// - Due to not being stored in git, no cat history is tracked, and
|
||||||
|
// cat operations are not mentioned on the recent changes page.
|
||||||
|
// - For cat A, if there are 0 hyphae in the cat, cat A does not
|
||||||
|
// exist. If there are 1 or more hyphae in the cat, cat A exists.
|
||||||
|
package categories
|
||||||
|
|
||||||
|
// For WithHypha and Contents, should the results be sorted?
|
||||||
|
|
||||||
|
// WithHypha returns what categories have the given hypha.
|
||||||
|
func WithHypha(hyphaName string) (categoryList []string) {
|
||||||
|
panic("todo")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Contents returns what hyphae are in the category. If the returned slice is empty, the category does not exist, and vice versa.
|
||||||
|
func Contents(catName string) (hyphaList []string) {
|
||||||
|
panic("todo")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddHyphaToCategory adds the hypha to the category and updates the records on the disk. If the hypha is already in the category, nothing happens. This operation is async-safe.
|
||||||
|
func AddHyphaToCategory(hyphaName, catName string) {
|
||||||
|
for _, cat := range WithHypha(hyphaName) {
|
||||||
|
if cat == catName {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
panic("todo")
|
||||||
|
}
|
||||||
|
|
||||||
|
// RemoveHyphaFromCategory removes the hypha from the category and updates the records on the disk. If the hypha is not in the category, nothing happens. This operation is async-safe.
|
||||||
|
func RemoveHyphaFromCategory(hyphaName, catName string) {
|
||||||
|
panic("todo")
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user