go.charczuk.com@v0.0.0-20240327042549-bc490516bd1a/sdk/db/dbgen/foreign_key.go (about) 1 /* 2 3 Copyright (c) 2023 - Present. Will Charczuk. All rights reserved. 4 Use of this source code is governed by a MIT license that can be found in the LICENSE file at the root of the repository. 5 6 */ 7 8 package dbgen 9 10 import ( 11 "go.charczuk.com/sdk/db" 12 ) 13 14 // ForeignKey generates an alter table statement that adds a foreign key to a table. 15 func ForeignKey(obj any, objCol string, reference any, referenceCol string) string { 16 mustHaveColumn(obj, objCol) 17 mustHaveColumn(reference, referenceCol) 18 objTableName := db.TableName(obj) 19 referenceTableName := db.TableName(reference) 20 return f(`ALTER TABLE {{ .objTableName }} ADD CONSTRAINT fk_{{ .objTableName }}_{{ .objCol }} FOREIGN KEY ({{ .objCol }}) REFERENCES {{ .referenceTableName }}({{ .referenceCol }})`, v{ 21 "objTableName": objTableName, 22 "objCol": objCol, 23 "referenceTableName": referenceTableName, 24 "referenceCol": referenceCol, 25 }) 26 }