about summary refs log tree commit diff
path: root/src/rest-api/handler/db.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/rest-api/handler/db.go')
-rw-r--r--src/rest-api/handler/db.go37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/rest-api/handler/db.go b/src/rest-api/handler/db.go
new file mode 100644
index 0000000..0093c41
--- /dev/null
+++ b/src/rest-api/handler/db.go
@@ -0,0 +1,37 @@
+package handler
+
+import (
+	"context"
+
+	"github.com/Baitinq/fs-tracer-backend/lib"
+	"github.com/jmoiron/sqlx"
+)
+
+//go:generate mockgen -source=$GOFILE -package=$GOPACKAGE -destination=mock_$GOFILE
+type DB interface {
+	GetLatestFileByPath(ctx context.Context, path string) (*lib.File, error)
+}
+
+type DBImpl struct {
+	db *sqlx.DB
+}
+
+var _ DB = (*DBImpl)(nil)
+
+func NewDB(db *sqlx.DB) DB {
+	return &DBImpl{db: db}
+}
+
+func (db DBImpl) GetLatestFileByPath(ctx context.Context, path string) (*lib.File, error) {
+	var file lib.File
+	err := db.db.GetContext(ctx, &file, `
+		SELECT * FROM private.file
+		WHERE absolute_path = $1
+		ORDER BY timestamp DESC
+		LIMIT 1
+	`, path)
+	if err != nil {
+		return nil, err
+	}
+	return &file, nil
+}