@@ -21,6 +21,8 @@ var DATABASE_URL string = orDefault(
21
21
22
22
var fromFlag * string = flag .String ("from" , "" , "Insert from this folder" )
23
23
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" )
24
26
25
27
func orDefault (s , def string ) string {
26
28
if s == "" {
@@ -51,6 +53,7 @@ func readJobs() *[]Jobs {
51
53
jobs = make ([]Jobs , len (jsonFiles ))
52
54
} else {
53
55
// Read json from stdin
56
+ log .Printf ("Reading JSON jobs from the stdin\n " )
54
57
bytes , err := io .ReadAll (os .Stdin )
55
58
if err != nil {
56
59
panic (err )
@@ -79,43 +82,65 @@ func readJobs() *[]Jobs {
79
82
func main () {
80
83
flag .Parse ()
81
84
85
+ log .Printf ("Connecting to the db\n " )
82
86
conn , err := pgx .Connect (context .Background (), DATABASE_URL )
83
87
if err != nil {
84
88
panic (err )
85
89
}
86
- log .Printf ("Connected!!!\n " )
87
90
88
91
var version string
89
92
err = conn .QueryRow (context .Background (),
90
93
"select version()" ).Scan (& version )
91
94
if err != nil {
92
95
log .Fatalf ("QueryRow failed: %v\n " , err )
93
96
}
94
- fmt .Printf ("Version: %s\n " , version )
97
+ log .Printf ("Version: %s\n " , version )
95
98
defer conn .Close (context .Background ())
96
99
97
100
// Truncate the table
98
101
if * truncateFlag {
99
102
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
+ }
101
122
}
102
123
103
124
for _ , data := range * readJobs () {
104
125
// Append the *new* tag for the new imported data
105
126
var tags = append (data .Tags , "new" )
106
127
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,
112
134
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
+ }
119
144
}
120
145
121
146
os .Exit (0 )
0 commit comments