Skip to content

Commit 9cb106d

Browse files
committed
Make inserting tool safer and eaasier to use
1 parent 886a0ce commit 9cb106d

File tree

1 file changed

+39
-14
lines changed

1 file changed

+39
-14
lines changed

tools/insert_txt.go

+39-14
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ var DATABASE_URL string = orDefault(
2121

2222
var fromFlag *string = flag.String("from", "", "Insert from this folder")
2323
var truncateFlag *bool = flag.Bool("truncate-table", false, "Truncate the table before inserting the new data")
24+
var updateNewFlag *bool = flag.Bool("update-tags", false, "Delete \"new\" tag from existing entries before adding the new entries")
25+
var dryRunFlag *bool = flag.Bool("dry-run", true, "Do not do anything, print what whould be done instead")
2426

2527
func orDefault(s, def string) string {
2628
if s == "" {
@@ -51,6 +53,7 @@ func readJobs() *[]Jobs {
5153
jobs = make([]Jobs, len(jsonFiles))
5254
} else {
5355
// Read json from stdin
56+
log.Printf("Reading JSON jobs from the stdin\n")
5457
bytes, err := io.ReadAll(os.Stdin)
5558
if err != nil {
5659
panic(err)
@@ -79,43 +82,65 @@ func readJobs() *[]Jobs {
7982
func main() {
8083
flag.Parse()
8184

85+
log.Printf("Connecting to the db\n")
8286
conn, err := pgx.Connect(context.Background(), DATABASE_URL)
8387
if err != nil {
8488
panic(err)
8589
}
86-
log.Printf("Connected!!!\n")
8790

8891
var version string
8992
err = conn.QueryRow(context.Background(),
9093
"select version()").Scan(&version)
9194
if err != nil {
9295
log.Fatalf("QueryRow failed: %v\n", err)
9396
}
94-
fmt.Printf("Version: %s\n", version)
97+
log.Printf("Version: %s\n", version)
9598
defer conn.Close(context.Background())
9699

97100
// Truncate the table
98101
if *truncateFlag {
99102
log.Printf("Truncating the table")
100-
_, err = conn.Exec(context.Background(), "truncate table jobs")
103+
if !*dryRunFlag {
104+
if _, err = conn.Exec(context.Background(), "truncate table jobs"); err != nil {
105+
log.Panic(err)
106+
}
107+
} else {
108+
log.Printf("Wound truncate the jobs table")
109+
}
110+
}
111+
112+
if *updateNewFlag {
113+
log.Printf("Updating \"new\" tags")
114+
qry := "update jobs set tags = array_remove(tags, 'new')"
115+
if !*dryRunFlag {
116+
if _, err = conn.Exec(context.Background(), qry); err != nil {
117+
log.Panic(err)
118+
}
119+
} else {
120+
log.Printf("Wound update the tags: %s", qry)
121+
}
101122
}
102123

103124
for _, data := range *readJobs() {
104125
// Append the *new* tag for the new imported data
105126
var tags = append(data.Tags, "new")
106127

107-
conn.Exec(context.Background(),
108-
`INSERT INTO jobs (title, descrip, url, tags, metadata)
109-
VALUES($1, $2, $3, $4, $5)
110-
ON CONFLICT (url) DO UPDATE
111-
SET title = $1,
128+
if !*dryRunFlag {
129+
conn.Exec(context.Background(),
130+
`INSERT INTO jobs (title, descrip, url, tags, metadata)
131+
VALUES($1, $2, $3, $4, $5)
132+
ON CONFLICT (url) DO UPDATE
133+
SET title = $1,
112134
descrip = $2,
113-
tags = $4,
114-
metadata = $5
115-
`,
116-
data.Title, data.Descrip, data.Url, tags, data.Metadata)
117-
118-
fmt.Println(data.Title, "inserted")
135+
tags = array_remove($4, 'new'),
136+
metadata = $5
137+
`,
138+
data.Title, data.Descrip, data.Url, tags, data.Metadata)
139+
140+
fmt.Println(data.Title, "inserted")
141+
} else {
142+
log.Printf("Wound insert or update the job: %s", data.Title)
143+
}
119144
}
120145

121146
os.Exit(0)

0 commit comments

Comments
 (0)