[#4448] added error checks to the autogenerated Go migrations
This commit is contained in:
		
							parent
							
								
									b845d3dbea
								
							
						
					
					
						commit
						9babca5f77
					
				| 
						 | 
					@ -2,6 +2,8 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- Initialize `RecordAuthWithOAuth2Event.IsNewRecord` for the `OnRecordBeforeAuthWithOAuth2Request` hook ([#4437](https://github.com/pocketbase/pocketbase/discussions/4437)).
 | 
					- Initialize `RecordAuthWithOAuth2Event.IsNewRecord` for the `OnRecordBeforeAuthWithOAuth2Request` hook ([#4437](https://github.com/pocketbase/pocketbase/discussions/4437)).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Added error checks to the autogenerated Go migrations ([#4448](https://github.com/pocketbase/pocketbase/issues/4448)).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## v0.22.0
 | 
					## v0.22.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -532,19 +532,23 @@ func init() {
 | 
				
			||||||
		collection.DeleteRule = nil
 | 
							collection.DeleteRule = nil
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		options := map[string]any{}
 | 
							options := map[string]any{}
 | 
				
			||||||
		json.Unmarshal([]byte(` + "`" + `{}` + "`" + `), &options)
 | 
							if err := json.Unmarshal([]byte(` + "`" + `{}` + "`" + `), &options); err != nil {
 | 
				
			||||||
 | 
								return err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		collection.SetOptions(options)
 | 
							collection.SetOptions(options)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		json.Unmarshal([]byte(` + "`" + `[
 | 
							if err := json.Unmarshal([]byte(` + "`" + `[
 | 
				
			||||||
			"create index test1 on test456_update (f1_name)"
 | 
								"create index test1 on test456_update (f1_name)"
 | 
				
			||||||
		]` + "`" + `), &collection.Indexes)
 | 
							]` + "`" + `), &collection.Indexes); err != nil {
 | 
				
			||||||
 | 
								return err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// remove
 | 
							// remove
 | 
				
			||||||
		collection.Schema.RemoveField("f3_id")
 | 
							collection.Schema.RemoveField("f3_id")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// add
 | 
							// add
 | 
				
			||||||
		new_f4_name := &schema.SchemaField{}
 | 
							new_f4_name := &schema.SchemaField{}
 | 
				
			||||||
		json.Unmarshal([]byte(` + "`" + `{
 | 
							if err := json.Unmarshal([]byte(` + "`" + `{
 | 
				
			||||||
			"system": false,
 | 
								"system": false,
 | 
				
			||||||
			"id": "f4_id",
 | 
								"id": "f4_id",
 | 
				
			||||||
			"name": "f4_name",
 | 
								"name": "f4_name",
 | 
				
			||||||
| 
						 | 
					@ -557,12 +561,14 @@ func init() {
 | 
				
			||||||
				"max": null,
 | 
									"max": null,
 | 
				
			||||||
				"pattern": ` + "\"` + \"`\" + `test backtick` + \"`\" + `123\"" + `
 | 
									"pattern": ` + "\"` + \"`\" + `test backtick` + \"`\" + `123\"" + `
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}` + "`" + `), new_f4_name)
 | 
							}` + "`" + `), new_f4_name); err != nil {
 | 
				
			||||||
 | 
								return err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		collection.Schema.AddField(new_f4_name)
 | 
							collection.Schema.AddField(new_f4_name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// update
 | 
							// update
 | 
				
			||||||
		edit_f2_name_new := &schema.SchemaField{}
 | 
							edit_f2_name_new := &schema.SchemaField{}
 | 
				
			||||||
		json.Unmarshal([]byte(` + "`" + `{
 | 
							if err := json.Unmarshal([]byte(` + "`" + `{
 | 
				
			||||||
			"system": false,
 | 
								"system": false,
 | 
				
			||||||
			"id": "f2_id",
 | 
								"id": "f2_id",
 | 
				
			||||||
			"name": "f2_name_new",
 | 
								"name": "f2_name_new",
 | 
				
			||||||
| 
						 | 
					@ -575,7 +581,9 @@ func init() {
 | 
				
			||||||
				"max": null,
 | 
									"max": null,
 | 
				
			||||||
				"noDecimal": false
 | 
									"noDecimal": false
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}` + "`" + `), edit_f2_name_new)
 | 
							}` + "`" + `), edit_f2_name_new); err != nil {
 | 
				
			||||||
 | 
								return err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		collection.Schema.AddField(edit_f2_name_new)
 | 
							collection.Schema.AddField(edit_f2_name_new)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return dao.SaveCollection(collection)
 | 
							return dao.SaveCollection(collection)
 | 
				
			||||||
| 
						 | 
					@ -600,7 +608,7 @@ func init() {
 | 
				
			||||||
		collection.DeleteRule = types.Pointer("id = \"3\"")
 | 
							collection.DeleteRule = types.Pointer("id = \"3\"")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		options := map[string]any{}
 | 
							options := map[string]any{}
 | 
				
			||||||
		json.Unmarshal([]byte(` + "`" + `{
 | 
							if err := json.Unmarshal([]byte(` + "`" + `{
 | 
				
			||||||
			"allowEmailAuth": false,
 | 
								"allowEmailAuth": false,
 | 
				
			||||||
			"allowOAuth2Auth": false,
 | 
								"allowOAuth2Auth": false,
 | 
				
			||||||
			"allowUsernameAuth": false,
 | 
								"allowUsernameAuth": false,
 | 
				
			||||||
| 
						 | 
					@ -610,16 +618,20 @@ func init() {
 | 
				
			||||||
			"onlyEmailDomains": null,
 | 
								"onlyEmailDomains": null,
 | 
				
			||||||
			"onlyVerified": false,
 | 
								"onlyVerified": false,
 | 
				
			||||||
			"requireEmail": false
 | 
								"requireEmail": false
 | 
				
			||||||
		}` + "`" + `), &options)
 | 
							}` + "`" + `), &options); err != nil {
 | 
				
			||||||
 | 
								return err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		collection.SetOptions(options)
 | 
							collection.SetOptions(options)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		json.Unmarshal([]byte(` + "`" + `[
 | 
							if err := json.Unmarshal([]byte(` + "`" + `[
 | 
				
			||||||
			"create index test1 on test456 (f1_name)"
 | 
								"create index test1 on test456 (f1_name)"
 | 
				
			||||||
		]` + "`" + `), &collection.Indexes)
 | 
							]` + "`" + `), &collection.Indexes); err != nil {
 | 
				
			||||||
 | 
								return err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// add
 | 
							// add
 | 
				
			||||||
		del_f3_name := &schema.SchemaField{}
 | 
							del_f3_name := &schema.SchemaField{}
 | 
				
			||||||
		json.Unmarshal([]byte(` + "`" + `{
 | 
							if err := json.Unmarshal([]byte(` + "`" + `{
 | 
				
			||||||
			"system": false,
 | 
								"system": false,
 | 
				
			||||||
			"id": "f3_id",
 | 
								"id": "f3_id",
 | 
				
			||||||
			"name": "f3_name",
 | 
								"name": "f3_name",
 | 
				
			||||||
| 
						 | 
					@ -628,7 +640,9 @@ func init() {
 | 
				
			||||||
			"presentable": false,
 | 
								"presentable": false,
 | 
				
			||||||
			"unique": false,
 | 
								"unique": false,
 | 
				
			||||||
			"options": {}
 | 
								"options": {}
 | 
				
			||||||
		}` + "`" + `), del_f3_name)
 | 
							}` + "`" + `), del_f3_name); err != nil {
 | 
				
			||||||
 | 
								return err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		collection.Schema.AddField(del_f3_name)
 | 
							collection.Schema.AddField(del_f3_name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// remove
 | 
							// remove
 | 
				
			||||||
| 
						 | 
					@ -636,7 +650,7 @@ func init() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// update
 | 
							// update
 | 
				
			||||||
		edit_f2_name_new := &schema.SchemaField{}
 | 
							edit_f2_name_new := &schema.SchemaField{}
 | 
				
			||||||
		json.Unmarshal([]byte(` + "`" + `{
 | 
							if err := json.Unmarshal([]byte(` + "`" + `{
 | 
				
			||||||
			"system": false,
 | 
								"system": false,
 | 
				
			||||||
			"id": "f2_id",
 | 
								"id": "f2_id",
 | 
				
			||||||
			"name": "f2_name",
 | 
								"name": "f2_name",
 | 
				
			||||||
| 
						 | 
					@ -649,7 +663,9 @@ func init() {
 | 
				
			||||||
				"max": null,
 | 
									"max": null,
 | 
				
			||||||
				"noDecimal": false
 | 
									"noDecimal": false
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}` + "`" + `), edit_f2_name_new)
 | 
							}` + "`" + `), edit_f2_name_new); err != nil {
 | 
				
			||||||
 | 
								return err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		collection.Schema.AddField(edit_f2_name_new)
 | 
							collection.Schema.AddField(edit_f2_name_new)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return dao.SaveCollection(collection)
 | 
							return dao.SaveCollection(collection)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -598,11 +598,11 @@ func (p *plugin) goDiffTemplate(new *models.Collection, old *models.Collection)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if !bytes.Equal(rawNewOptions, rawOldOptions) {
 | 
						if !bytes.Equal(rawNewOptions, rawOldOptions) {
 | 
				
			||||||
		upParts = append(upParts, "options := map[string]any{}")
 | 
							upParts = append(upParts, "options := map[string]any{}")
 | 
				
			||||||
		upParts = append(upParts, fmt.Sprintf("json.Unmarshal([]byte(`%s`), &options)", escapeBacktick(string(rawNewOptions))))
 | 
							upParts = append(upParts, goErrIf(fmt.Sprintf("json.Unmarshal([]byte(`%s`), &options)", escapeBacktick(string(rawNewOptions)))))
 | 
				
			||||||
		upParts = append(upParts, fmt.Sprintf("%s.SetOptions(options)\n", varName))
 | 
							upParts = append(upParts, fmt.Sprintf("%s.SetOptions(options)\n", varName))
 | 
				
			||||||
		// ---
 | 
							// ---
 | 
				
			||||||
		downParts = append(downParts, "options := map[string]any{}")
 | 
							downParts = append(downParts, "options := map[string]any{}")
 | 
				
			||||||
		downParts = append(downParts, fmt.Sprintf("json.Unmarshal([]byte(`%s`), &options)", escapeBacktick(string(rawOldOptions))))
 | 
							downParts = append(downParts, goErrIf(fmt.Sprintf("json.Unmarshal([]byte(`%s`), &options)", escapeBacktick(string(rawOldOptions)))))
 | 
				
			||||||
		downParts = append(downParts, fmt.Sprintf("%s.SetOptions(options)\n", varName))
 | 
							downParts = append(downParts, fmt.Sprintf("%s.SetOptions(options)\n", varName))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -616,9 +616,9 @@ func (p *plugin) goDiffTemplate(new *models.Collection, old *models.Collection)
 | 
				
			||||||
		return "", err
 | 
							return "", err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if !bytes.Equal(rawNewIndexes, rawOldIndexes) {
 | 
						if !bytes.Equal(rawNewIndexes, rawOldIndexes) {
 | 
				
			||||||
		upParts = append(upParts, fmt.Sprintf("json.Unmarshal([]byte(`%s`), &%s.Indexes)\n", escapeBacktick(string(rawNewIndexes)), varName))
 | 
							upParts = append(upParts, goErrIf(fmt.Sprintf("json.Unmarshal([]byte(`%s`), &%s.Indexes)", escapeBacktick(string(rawNewIndexes)), varName))+"\n")
 | 
				
			||||||
		// ---
 | 
							// ---
 | 
				
			||||||
		downParts = append(downParts, fmt.Sprintf("json.Unmarshal([]byte(`%s`), &%s.Indexes)\n", escapeBacktick(string(rawOldIndexes)), varName))
 | 
							downParts = append(downParts, goErrIf(fmt.Sprintf("json.Unmarshal([]byte(`%s`), &%s.Indexes)", escapeBacktick(string(rawOldIndexes)), varName))+"\n")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Schema
 | 
						// Schema
 | 
				
			||||||
| 
						 | 
					@ -641,7 +641,7 @@ func (p *plugin) goDiffTemplate(new *models.Collection, old *models.Collection)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		downParts = append(downParts, "// add")
 | 
							downParts = append(downParts, "// add")
 | 
				
			||||||
		downParts = append(downParts, fmt.Sprintf("%s := &schema.SchemaField{}", fieldVar))
 | 
							downParts = append(downParts, fmt.Sprintf("%s := &schema.SchemaField{}", fieldVar))
 | 
				
			||||||
		downParts = append(downParts, fmt.Sprintf("json.Unmarshal([]byte(`%s`), %s)", escapeBacktick(string(rawOldField)), fieldVar))
 | 
							downParts = append(downParts, goErrIf(fmt.Sprintf("json.Unmarshal([]byte(`%s`), %s)", escapeBacktick(string(rawOldField)), fieldVar)))
 | 
				
			||||||
		downParts = append(downParts, fmt.Sprintf("%s.Schema.AddField(%s)\n", varName, fieldVar))
 | 
							downParts = append(downParts, fmt.Sprintf("%s.Schema.AddField(%s)\n", varName, fieldVar))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -660,7 +660,7 @@ func (p *plugin) goDiffTemplate(new *models.Collection, old *models.Collection)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		upParts = append(upParts, "// add")
 | 
							upParts = append(upParts, "// add")
 | 
				
			||||||
		upParts = append(upParts, fmt.Sprintf("%s := &schema.SchemaField{}", fieldVar))
 | 
							upParts = append(upParts, fmt.Sprintf("%s := &schema.SchemaField{}", fieldVar))
 | 
				
			||||||
		upParts = append(upParts, fmt.Sprintf("json.Unmarshal([]byte(`%s`), %s)", escapeBacktick(string(rawNewField)), fieldVar))
 | 
							upParts = append(upParts, goErrIf(fmt.Sprintf("json.Unmarshal([]byte(`%s`), %s)", escapeBacktick(string(rawNewField)), fieldVar)))
 | 
				
			||||||
		upParts = append(upParts, fmt.Sprintf("%s.Schema.AddField(%s)\n", varName, fieldVar))
 | 
							upParts = append(upParts, fmt.Sprintf("%s.Schema.AddField(%s)\n", varName, fieldVar))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		downParts = append(downParts, "// remove")
 | 
							downParts = append(downParts, "// remove")
 | 
				
			||||||
| 
						 | 
					@ -692,12 +692,12 @@ func (p *plugin) goDiffTemplate(new *models.Collection, old *models.Collection)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		upParts = append(upParts, "// update")
 | 
							upParts = append(upParts, "// update")
 | 
				
			||||||
		upParts = append(upParts, fmt.Sprintf("%s := &schema.SchemaField{}", fieldVar))
 | 
							upParts = append(upParts, fmt.Sprintf("%s := &schema.SchemaField{}", fieldVar))
 | 
				
			||||||
		upParts = append(upParts, fmt.Sprintf("json.Unmarshal([]byte(`%s`), %s)", escapeBacktick(string(rawNewField)), fieldVar))
 | 
							upParts = append(upParts, goErrIf(fmt.Sprintf("json.Unmarshal([]byte(`%s`), %s)", escapeBacktick(string(rawNewField)), fieldVar)))
 | 
				
			||||||
		upParts = append(upParts, fmt.Sprintf("%s.Schema.AddField(%s)\n", varName, fieldVar))
 | 
							upParts = append(upParts, fmt.Sprintf("%s.Schema.AddField(%s)\n", varName, fieldVar))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		downParts = append(downParts, "// update")
 | 
							downParts = append(downParts, "// update")
 | 
				
			||||||
		downParts = append(downParts, fmt.Sprintf("%s := &schema.SchemaField{}", fieldVar))
 | 
							downParts = append(downParts, fmt.Sprintf("%s := &schema.SchemaField{}", fieldVar))
 | 
				
			||||||
		downParts = append(downParts, fmt.Sprintf("json.Unmarshal([]byte(`%s`), %s)", escapeBacktick(string(rawOldField)), fieldVar))
 | 
							downParts = append(downParts, goErrIf(fmt.Sprintf("json.Unmarshal([]byte(`%s`), %s)", escapeBacktick(string(rawOldField)), fieldVar)))
 | 
				
			||||||
		downParts = append(downParts, fmt.Sprintf("%s.Schema.AddField(%s)\n", varName, fieldVar))
 | 
							downParts = append(downParts, fmt.Sprintf("%s.Schema.AddField(%s)\n", varName, fieldVar))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	// ---------------------------------------------------------------
 | 
						// ---------------------------------------------------------------
 | 
				
			||||||
| 
						 | 
					@ -791,3 +791,7 @@ func marhshalWithoutEscape(v any, prefix string, indent string) ([]byte, error)
 | 
				
			||||||
func escapeBacktick(v string) string {
 | 
					func escapeBacktick(v string) string {
 | 
				
			||||||
	return strings.ReplaceAll(v, "`", "` + \"`\" + `")
 | 
						return strings.ReplaceAll(v, "`", "` + \"`\" + `")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func goErrIf(v string) string {
 | 
				
			||||||
 | 
						return "if err := " + v + "; err != nil {\n\t\t\treturn err\n\t\t}"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue