Go Structs
go
Generate plain Go structs with json struct tags from SQL schema
Example Output
Generated from the pet-store sample schema:
go
// Generated by @sqldoc/templates/go-structs -- DO NOT EDIT
package models
import (
"encoding/json"
"time"
)
type Adoption struct {
Id int32 `json:"id"`
PetId int32 `json:"pet_id"`
OwnerId int32 `json:"owner_id"`
AdoptedAt time.Time `json:"adopted_at"`
AdoptionFee string `json:"adoption_fee"`
}
type AdoptionsAuditLog struct {
Id int64 `json:"id"`
TableName string `json:"table_name"`
Operation string `json:"operation"`
OldData *json.RawMessage `json:"old_data,omitempty"`
NewData *json.RawMessage `json:"new_data,omitempty"`
ChangedAt time.Time `json:"changed_at"`
}
type Category struct {
Id int32 `json:"id"`
Name string `json:"name"`
Description *string `json:"description,omitempty"`
}
type LegacyInventory struct {
Id int32 `json:"id"`
ItemName *string `json:"item_name,omitempty"`
OldSku *string `json:"old_sku,omitempty"`
Quantity *int32 `json:"quantity,omitempty"`
}
type Location struct {
Id int32 `json:"id"`
Name string `json:"name"`
Address string `json:"address"`
City string `json:"city"`
Zip *string `json:"zip,omitempty"`
}
type MedicalRecord struct {
Id int32 `json:"id"`
PetId int32 `json:"pet_id"`
VisitDate time.Time `json:"visit_date"`
Diagnosis string `json:"diagnosis"`
Treatment *string `json:"treatment,omitempty"`
VetName *string `json:"vet_name,omitempty"`
}
type Owner struct {
Id int32 `json:"id"`
Name string `json:"name"`
Email string `json:"email"`
Phone *string `json:"phone,omitempty"`
CreatedAt *time.Time `json:"created_at,omitempty"`
}
type Pet struct {
Id int32 `json:"id"`
CategoryId *int32 `json:"category_id,omitempty"`
Name string `json:"name"`
Sku string `json:"sku"`
Price string `json:"price"`
InternalNotes *string `json:"internal_notes,omitempty"`
Status string `json:"status"`
CreatedAt *time.Time `json:"created_at,omitempty"`
}
type Review struct {
Id int32 `json:"id"`
PetId int32 `json:"pet_id"`
OwnerId int32 `json:"owner_id"`
Rating int32 `json:"rating"`
Body *string `json:"body,omitempty"`
LocationId *int32 `json:"location_id,omitempty"`
CreatedAt *time.Time `json:"created_at,omitempty"`
}
type StaffAuditLog struct {
Id int64 `json:"id"`
TableName string `json:"table_name"`
Operation string `json:"operation"`
OldData *json.RawMessage `json:"old_data,omitempty"`
NewData *json.RawMessage `json:"new_data,omitempty"`
ChangedAt time.Time `json:"changed_at"`
}Usage
Add to your sqldoc.config.ts:
typescript
export default {
dialect: 'postgres',
schema: ['./schema.sql'],
codegen: [
{
template: 'go-structs',
output: './generated/models.go',
},
],
}Then run:
bash
sqldoc codegen