Queueing, prepping to fetch
A lot more to go, but this is the core. Need to think about how to test the queue handlers.
This commit is contained in:
@@ -3,6 +3,7 @@ package domain64
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
_ "embed"
|
||||
"fmt"
|
||||
"log"
|
||||
"slices"
|
||||
@@ -12,21 +13,33 @@ import (
|
||||
"github.com/jpillora/go-tld"
|
||||
)
|
||||
|
||||
//go:embed sqlc/schema.sql
|
||||
var ddl string
|
||||
|
||||
type Domain64Map struct {
|
||||
mu sync.Mutex
|
||||
m map[string]int
|
||||
DB *sql.DB
|
||||
Flushed bool
|
||||
Queries *sqlc.Queries
|
||||
}
|
||||
|
||||
func NewDomain64Map(db *sql.DB) (*Domain64Map, error) {
|
||||
func NewDomain64Map() (*Domain64Map, error) {
|
||||
d64m := &Domain64Map{}
|
||||
d64m.DB = db
|
||||
d64m.Flushed = true
|
||||
// Init the tables if a DB pointer is passed in.
|
||||
d64m.DB = nil
|
||||
d64m.Queries = nil
|
||||
return d64m, nil
|
||||
}
|
||||
|
||||
func (d64m *Domain64Map) Setup(db *sql.DB) {
|
||||
log.Printf("creating domain64 tables\n")
|
||||
if _, err := db.ExecContext(context.Background(), ddl); err != nil {
|
||||
log.Printf("setup err: %s", err.Error())
|
||||
panic(err)
|
||||
}
|
||||
d64m.DB = db
|
||||
d64m.Queries = sqlc.New(db)
|
||||
}
|
||||
|
||||
func (d64m *Domain64Map) URLToRFQDN(url *tld.URL) string {
|
||||
s := ""
|
||||
if url.TLD != "" {
|
||||
@@ -140,21 +153,21 @@ func (d64m *Domain64Map) URLToDomain64(url *tld.URL) (*Domain64, error) {
|
||||
}
|
||||
|
||||
d64 := &Domain64{}
|
||||
queries := sqlc.New(d64m.DB)
|
||||
|
||||
// These manipulate both the DB and the Domain64 struct
|
||||
err := _get_or_insert_tld(queries, d64, url)
|
||||
err := _get_or_insert_tld(d64m.Queries, d64, url)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
err = _get_or_insert_domain(queries, d64, url)
|
||||
err = _get_or_insert_domain(d64m.Queries, d64, url)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
err = _get_or_insert_subdomain(queries, d64, url)
|
||||
err = _get_or_insert_subdomain(d64m.Queries, d64, url)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
err = _get_or_insert_path(queries, d64, url)
|
||||
err = _get_or_insert_path(d64m.Queries, d64, url)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user