From 0e88e3e1f4301d9a78c798eccbb972000c0c7b8e Mon Sep 17 00:00:00 2001 From: akarki15 Date: Thu, 10 Nov 2016 01:22:07 -0500 Subject: [PATCH] Add a func to read bookmark from stored toml file Given a bookmark path and bookmark name, GetBookmark returns a Bookmark object that corresponds to the stored bookmark settings. In next commits, we will use this method to read stored bookmarks and create a db client. --- pkg/bookmarks/bookmarks.go | 19 +++++++++++++++++++ pkg/bookmarks/bookmarks_test.go | 22 ++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/pkg/bookmarks/bookmarks.go b/pkg/bookmarks/bookmarks.go index 666a8f2..2831a0a 100644 --- a/pkg/bookmarks/bookmarks.go +++ b/pkg/bookmarks/bookmarks.go @@ -75,3 +75,22 @@ func ReadAll(path string) (map[string]Bookmark, error) { return results, nil } + +type ErrNonExistingBookmark string + +func (e ErrNonExistingBookmark) Error() string { + return fmt.Sprintf("couldn't find a bookmark with name %s", e) +} + +func GetBookmark(bookmarkPath string, bookmarkName string) (Bookmark, error) { + bookmarks, err := ReadAll(bookmarkPath) + if err != nil { + return Bookmark{}, err + } + bookmark, ok := bookmarks[bookmarkName] + if !ok { + return Bookmark{}, ErrNonExistingBookmark(bookmarkName) + } + return bookmark, nil + +} diff --git a/pkg/bookmarks/bookmarks_test.go b/pkg/bookmarks/bookmarks_test.go index d5748f1..7553bdb 100644 --- a/pkg/bookmarks/bookmarks_test.go +++ b/pkg/bookmarks/bookmarks_test.go @@ -71,6 +71,28 @@ func Test_ReadBookmarks(t *testing.T) { assert.Equal(t, 2, len(bookmarks)) } +func Test_GetBookmark(t *testing.T) { + expBookmark := Bookmark{ + + Host: "localhost", + Port: "5432", + User: "postgres", + Password: "", + Database: "mydatabase", + Ssl: "disable", + } + b, err := GetBookmark("../../data", "bookmark") + if assert.NoError(t, err) { + assert.Equal(t, expBookmark, b) + } + + _, err = GetBookmark("../../data", "bar") + assert.Equal(t, ErrNonExistingBookmark("bar"), err) + + _, err = GetBookmark("foo", "bookmark") + assert.Error(t, err) +} + func Test_Bookmark_SSHInfoIsEmpty(t *testing.T) { emptySSH := shared.SSHInfo{ Host: "",