From 2ead92e075ecdceec9be7c852ad318299bc8d87e Mon Sep 17 00:00:00 2001 From: Fuwn Date: Wed, 14 Jul 2021 23:06:33 +0000 Subject: feat(database): persistant hits --- pkg/database/database.go | 59 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 pkg/database/database.go (limited to 'pkg') diff --git a/pkg/database/database.go b/pkg/database/database.go new file mode 100644 index 0000000..9d14fa9 --- /dev/null +++ b/pkg/database/database.go @@ -0,0 +1,59 @@ +// Copyright (C) 2021-2021 Fuwn +// SPDX-License-Identifier: GPL-3.0-only + +package database + +import ( + "github.com/sonyarouje/simdb" +) + +var driver *simdb.Driver + +func init() { + var err error + driver, err = simdb.New(".space/database") + if err != nil { + panic(err) + } +} + +type Hit struct { + Path string `json:"path"` + Count int `json:"count"` +} + +func (c Hit) ID() (jsonField string, value interface{}) { + value = c.Path + jsonField = "path" + return +} + +func Get(path string) int { + var hit Hit + + err := driver.Open(Hit{}).Where("path", "=", path).First().AsEntity(&hit) + if err != nil { + return 0 + } + + return hit.Count +} + +func Create(path string) { + driver.Insert(Hit{ + Path: path, + Count: 0, + }) +} + +func Increment(path string) { + var hit Hit + + err := driver.Open(Hit{}).Where("path", "=", path).First().AsEntity(&hit) + if err != nil { + return + } + + hit.Count = hit.Count + 1 + driver.Update(hit) +} -- cgit v1.2.3