@@ -27,6 +27,14 @@ func NewPostgreSQL(cfg *PostgreSQLConfig) (*sql.DB, error) {
27
27
}
28
28
29
29
func (ctx * PostgreSQLContext ) insertSubmission (submission * Submission ) error {
30
+ // if SnarkWork is empty, do not insert it into the database
31
+ if len (submission .SnarkWork ) == 0 {
32
+ return ctx .insertSubmissionWithoutSnarkWork (submission )
33
+ }
34
+ return ctx .insertSubmissionWithSnarkWork (submission )
35
+ }
36
+
37
+ func (ctx * PostgreSQLContext ) insertSubmissionWithoutSnarkWork (submission * Submission ) error {
30
38
query := `INSERT INTO submissions
31
39
(submitted_at_date,
32
40
submitted_at,
@@ -35,14 +43,33 @@ func (ctx *PostgreSQLContext) insertSubmission(submission *Submission) error {
35
43
block_hash,
36
44
remote_addr,
37
45
peer_id,
38
- snark_work,
39
46
graphql_control_port,
40
47
built_with_commit_sha)
41
- VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)`
48
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)`
49
+ _ , err := ctx .DB .Exec (query , submission .SubmittedAtDate , submission .SubmittedAt ,
50
+ submission .Submitter , submission .CreatedAt , submission .BlockHash ,
51
+ submission .RemoteAddr , submission .PeerId , submission .GraphqlControlPort ,
52
+ submission .BuiltWithCommitSha )
53
+ return err
54
+ }
55
+
56
+ func (ctx * PostgreSQLContext ) insertSubmissionWithSnarkWork (submission * Submission ) error {
57
+ query := `INSERT INTO submissions
58
+ (submitted_at_date,
59
+ submitted_at,
60
+ submitter,
61
+ created_at,
62
+ block_hash,
63
+ remote_addr,
64
+ peer_id,
65
+ graphql_control_port,
66
+ built_with_commit_sha,
67
+ snark_work)
68
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)`
42
69
_ , err := ctx .DB .Exec (query , submission .SubmittedAtDate , submission .SubmittedAt ,
43
70
submission .Submitter , submission .CreatedAt , submission .BlockHash ,
44
- submission .RemoteAddr , submission .PeerId , submission .SnarkWork ,
45
- submission .GraphqlControlPort , submission .BuiltWithCommitSha )
71
+ submission .RemoteAddr , submission .PeerId , submission .GraphqlControlPort ,
72
+ submission .BuiltWithCommitSha , submission .SnarkWork )
46
73
return err
47
74
}
48
75
@@ -54,6 +81,12 @@ func (ctx *PostgreSQLContext) PostgreSQLSave(objs ObjectsToSave) {
54
81
}
55
82
56
83
if err := ctx .insertSubmission (submissionToSave ); err != nil {
84
+ // if err contains uq_submissions_submitter_date then we can ignore it
85
+ // because it means that the submission is already in the database
86
+ if err .Error () == "pq: duplicate key value violates unique constraint \" uq_submissions_submitter_date\" " {
87
+ ctx .Log .Infof ("PostgreSQLSave: Submission for submitter: %v at %v already exists" , submissionToSave .Submitter , submissionToSave .SubmittedAt )
88
+ return
89
+ }
57
90
ctx .Log .Errorf ("PostgreSQLSave: Error saving submission to PostgreSQL: %v" , err )
58
91
} else {
59
92
ctx .Log .Infof ("PostgreSQLSave: Successfully saved submission for submitter: %v at %v" , submissionToSave .Submitter , submissionToSave .SubmittedAt )
0 commit comments