diff options
Diffstat (limited to 'src/rest-api/handler/db.go')
-rw-r--r-- | src/rest-api/handler/db.go | 37 |
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 +} |