summaryrefslogtreecommitdiffstats
path: root/cmd/npd.go
diff options
context:
space:
mode:
authors <[email protected]>2025-11-03 21:17:12 -0500
committers <[email protected]>2025-11-03 21:17:12 -0500
commitf7fcfa623e670dc533bb378912829c73a3593e63 (patch)
tree910119ff7293b407affa9ff34706d627d77a3a04 /cmd/npd.go
downloaddborg-f7fcfa623e670dc533bb378912829c73a3593e63.tar.gz
dborg-f7fcfa623e670dc533bb378912829c73a3593e63.zip
hi
Diffstat (limited to 'cmd/npd.go')
-rw-r--r--cmd/npd.go95
1 files changed, 95 insertions, 0 deletions
diff --git a/cmd/npd.go b/cmd/npd.go
new file mode 100644
index 0000000..0df627f
--- /dev/null
+++ b/cmd/npd.go
@@ -0,0 +1,95 @@
+package cmd
+
+import (
+ "dborg/internal/client"
+ "dborg/internal/config"
+ "dborg/internal/models"
+ "encoding/json"
+ "fmt"
+
+ "github.com/spf13/cobra"
+)
+
+var npdCmd = &cobra.Command{
+ Use: "npd",
+ Short: "Search NPD breach data",
+ Long: `Search NPD breach data by various fields`,
+ RunE: runNPDSearch,
+}
+
+func init() {
+ rootCmd.AddCommand(npdCmd)
+ npdCmd.Flags().StringP("id", "i", "", "ID")
+ npdCmd.Flags().StringP("firstname", "f", "", "First name")
+ npdCmd.Flags().StringP("lastname", "l", "", "Last name")
+ npdCmd.Flags().StringP("middlename", "m", "", "Middle name")
+ npdCmd.Flags().StringP("dob", "d", "", "Date of birth")
+ npdCmd.Flags().StringP("ssn", "s", "", "Social security number")
+ npdCmd.Flags().StringP("phone1", "p", "", "Phone number")
+ npdCmd.Flags().StringP("address", "a", "", "Address")
+ npdCmd.Flags().StringP("city", "c", "", "City")
+ npdCmd.Flags().StringP("st", "t", "", "State")
+ npdCmd.Flags().StringP("zip", "z", "", "ZIP code")
+ npdCmd.Flags().StringP("county_name", "y", "", "County name")
+ npdCmd.Flags().StringP("name_suff", "x", "", "Name suffix")
+ npdCmd.Flags().StringP("aka1fullname", "1", "", "AKA 1 full name")
+ npdCmd.Flags().StringP("aka2fullname", "2", "", "AKA 2 full name")
+ npdCmd.Flags().StringP("aka3fullname", "3", "", "AKA 3 full name")
+ npdCmd.Flags().StringP("alt1dob", "4", "", "Alternate DOB 1")
+ npdCmd.Flags().StringP("alt2dob", "5", "", "Alternate DOB 2")
+ npdCmd.Flags().StringP("alt3dob", "6", "", "Alternate DOB 3")
+ npdCmd.Flags().StringP("startdat", "r", "", "Start date")
+ npdCmd.Flags().IntP("max_hits", "n", 10, "Maximum number of hits to return")
+ npdCmd.Flags().StringP("sort_by", "o", "", "Sort by field")
+}
+
+func runNPDSearch(cmd *cobra.Command, args []string) error {
+ apiKey, _ := cmd.Flags().GetString("api-key")
+ cfg := config.New().WithAPIKey(apiKey)
+
+ c, err := client.New(cfg)
+ if err != nil {
+ return err
+ }
+
+ params := &models.NPDParams{}
+ params.ID, _ = cmd.Flags().GetString("id")
+ params.FirstName, _ = cmd.Flags().GetString("firstname")
+ params.LastName, _ = cmd.Flags().GetString("lastname")
+ params.MiddleName, _ = cmd.Flags().GetString("middlename")
+ params.DOB, _ = cmd.Flags().GetString("dob")
+ params.SSN, _ = cmd.Flags().GetString("ssn")
+ params.Phone1, _ = cmd.Flags().GetString("phone1")
+ params.Address, _ = cmd.Flags().GetString("address")
+ params.City, _ = cmd.Flags().GetString("city")
+ params.State, _ = cmd.Flags().GetString("st")
+ params.Zip, _ = cmd.Flags().GetString("zip")
+ params.CountyName, _ = cmd.Flags().GetString("county_name")
+ params.NameSuffix, _ = cmd.Flags().GetString("name_suff")
+ params.AKA1FullName, _ = cmd.Flags().GetString("aka1fullname")
+ params.AKA2FullName, _ = cmd.Flags().GetString("aka2fullname")
+ params.AKA3FullName, _ = cmd.Flags().GetString("aka3fullname")
+ params.Alt1DOB, _ = cmd.Flags().GetString("alt1dob")
+ params.Alt2DOB, _ = cmd.Flags().GetString("alt2dob")
+ params.Alt3DOB, _ = cmd.Flags().GetString("alt3dob")
+ params.StartDate, _ = cmd.Flags().GetString("startdat")
+ params.MaxHits, _ = cmd.Flags().GetInt("max_hits")
+ params.SortBy, _ = cmd.Flags().GetString("sort_by")
+
+ response, err := c.SearchNPD(params)
+ if err != nil {
+ return err
+ }
+
+ if response.Error != "" {
+ return fmt.Errorf("API error: %s", response.Error)
+ }
+
+ output, err := json.MarshalIndent(response.Results.Hits, "", " ")
+ if err != nil {
+ return fmt.Errorf("failed to format response: %w", err)
+ }
+
+ fmt.Println(string(output))
+ return nil
+}