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  }