gemini-search

A simple search engine for Geminispace
git clone git://git.laack.co/gemini-search.git
Log | Files | Refs | README

commit 2033e803e9fad5b8326c2776b57bc331bee3e382
parent fdaf393b96d0a90d8d5ca40b6a0f5054573fb32b
Author: Andrew Laack <andrew@laack.co>
Date:   Mon,  4 May 2026 20:50:09 -0500

Fixed link parsing; insert into table in one transaction.

Diffstat:
Mmain.go | 45++++++++++++++++++++++++---------------------
1 file changed, 24 insertions(+), 21 deletions(-)

diff --git a/main.go b/main.go @@ -11,8 +11,16 @@ import ( _ "github.com/mattn/go-sqlite3" ) -func index(url string) (string, []string) { - resp, err := gemini.Fetch(url) +func index(currentUrl string) (string, []string) { + + u, err := url.Parse(currentUrl) + baseUrl := fmt.Sprintf("%s://%s", u.Scheme, u.Host) + + if err != nil { + panic(err) + } + + resp, err := gemini.Fetch(currentUrl) if err != nil { panic(err) @@ -58,10 +66,11 @@ func index(url string) (string, []string) { indexOfSpace = len(item) } if strings.Compare(item[:9], "gemini://") == 0 { - geminiLinks = append(geminiLinks, item) + geminiLinks = append(geminiLinks, item[0:indexOfSpace]) } if strings.Contains(item, "://") == false { - geminiLinks = append(geminiLinks, item) + // relative link + geminiLinks = append(geminiLinks, baseUrl + item[0:indexOfSpace]) } } @@ -92,36 +101,30 @@ func main() { panic(err) } + currentUrl := "gemini://tlgs.one/known-hosts" body, forwardGeminiLinks := index(currentUrl) - fmt.Println("\n=== Body ===\n") - fmt.Println(body) - fmt.Println("\n=== Body ===\n") - - fmt.Println("\n=== Links ===\n") - for index, link := range forwardGeminiLinks { - fmt.Printf("%d: %s\n", index, link) - } - fmt.Println("\n=== Links ===\n") - err = os.WriteFile("outputs/" + url.PathEscape(currentUrl), []byte(body), 0644) if err != nil { panic(err) } - f, err := os.OpenFile("outputs/links.txt", os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0600) - if err != nil { - panic(err) - } + insertLinkQuery := "INSERT INTO link (source, destination) VALUES (?, ?)" - defer f.Close() + tx, _ := db.Begin() - for _, link := range forwardGeminiLinks { - if _, err = f.WriteString(link + "\n"); err != nil { + for index, link := range forwardGeminiLinks { + + _, err := tx.Exec(insertLinkQuery, currentUrl, link) + fmt.Printf("Inserting link %d into table\n", index) + + if err != nil { panic(err) } + } + tx.Commit() }