Nobody had ever created a function like this one before. (#26)

Reviewed-on: rrise/reloading-manager#26
Co-authored-by: Ron Rise <ron@siteworxpro.com>
Co-committed-by: Ron Rise <ron@siteworxpro.com>
This commit is contained in:
2025-04-18 17:30:11 -04:00
committed by Siteworx Pro Gitea
parent 1ae280d785
commit eaa9b97baa
41 changed files with 1159 additions and 88 deletions

View File

@@ -0,0 +1,24 @@
//
// Code generated by go-jet DO NOT EDIT.
//
// WARNING: Changes to this file may cause incorrect behavior
// and will be lost if the code is regenerated
//
package model
import (
"github.com/google/uuid"
"time"
)
type Bullets struct {
ID uuid.UUID `sql:"primary_key"`
Name string
Weight int32
Diameter int32
Meta *string
Photo *[]byte
ManufacturerID uuid.UUID
CreatedAt time.Time
}

View File

@@ -0,0 +1,20 @@
//
// Code generated by go-jet DO NOT EDIT.
//
// WARNING: Changes to this file may cause incorrect behavior
// and will be lost if the code is regenerated
//
package model
import (
"github.com/google/uuid"
"time"
)
type Cartridges struct {
ID uuid.UUID `sql:"primary_key"`
Name string
CreatedAt time.Time
Meta string
}

View File

@@ -0,0 +1,26 @@
//
// Code generated by go-jet DO NOT EDIT.
//
// WARNING: Changes to this file may cause incorrect behavior
// and will be lost if the code is regenerated
//
package model
import (
"github.com/google/uuid"
"time"
)
type Loads struct {
ID uuid.UUID `sql:"primary_key"`
CartridgeID uuid.UUID
Col float32
PowderID uuid.UUID
PowderGr float32
PrimerID uuid.UUID
BulletID uuid.UUID
Photo []byte
CreatedAt time.Time
Meta string
}

View File

@@ -0,0 +1,20 @@
//
// Code generated by go-jet DO NOT EDIT.
//
// WARNING: Changes to this file may cause incorrect behavior
// and will be lost if the code is regenerated
//
package model
import (
"github.com/google/uuid"
"time"
)
type Manufacturers struct {
ID uuid.UUID `sql:"primary_key"`
Name string
URL *string
CreatedAt time.Time
}

View File

@@ -0,0 +1,22 @@
//
// Code generated by go-jet DO NOT EDIT.
//
// WARNING: Changes to this file may cause incorrect behavior
// and will be lost if the code is regenerated
//
package model
import (
"github.com/google/uuid"
"time"
)
type Powders struct {
ID uuid.UUID `sql:"primary_key"`
Name string
Meta *string
Photo *[]byte
ManufacturerID uuid.UUID
CreatedAt time.Time
}

View File

@@ -0,0 +1,22 @@
//
// Code generated by go-jet DO NOT EDIT.
//
// WARNING: Changes to this file may cause incorrect behavior
// and will be lost if the code is regenerated
//
package model
import (
"github.com/google/uuid"
"time"
)
type Primers struct {
ID uuid.UUID `sql:"primary_key"`
Name string
Meta *string
Photo *[]byte
ManufacturerID uuid.UUID
CreatedAt time.Time
}

View File

@@ -0,0 +1,13 @@
//
// Code generated by go-jet DO NOT EDIT.
//
// WARNING: Changes to this file may cause incorrect behavior
// and will be lost if the code is regenerated
//
package model
type SchemaMigrations struct {
Version int64 `sql:"primary_key"`
Dirty bool
}

View File

@@ -0,0 +1,99 @@
//
// Code generated by go-jet DO NOT EDIT.
//
// WARNING: Changes to this file may cause incorrect behavior
// and will be lost if the code is regenerated
//
package table
import (
"github.com/go-jet/jet/v2/postgres"
)
var Bullets = newBulletsTable("public", "bullets", "")
type bulletsTable struct {
postgres.Table
// Columns
ID postgres.ColumnString
Name postgres.ColumnString
Weight postgres.ColumnInteger
Diameter postgres.ColumnInteger
Meta postgres.ColumnString
Photo postgres.ColumnBytea
ManufacturerID postgres.ColumnString
CreatedAt postgres.ColumnTimestamp
AllColumns postgres.ColumnList
MutableColumns postgres.ColumnList
DefaultColumns postgres.ColumnList
}
type BulletsTable struct {
bulletsTable
EXCLUDED bulletsTable
}
// AS creates new BulletsTable with assigned alias
func (a BulletsTable) AS(alias string) *BulletsTable {
return newBulletsTable(a.SchemaName(), a.TableName(), alias)
}
// Schema creates new BulletsTable with assigned schema name
func (a BulletsTable) FromSchema(schemaName string) *BulletsTable {
return newBulletsTable(schemaName, a.TableName(), a.Alias())
}
// WithPrefix creates new BulletsTable with assigned table prefix
func (a BulletsTable) WithPrefix(prefix string) *BulletsTable {
return newBulletsTable(a.SchemaName(), prefix+a.TableName(), a.TableName())
}
// WithSuffix creates new BulletsTable with assigned table suffix
func (a BulletsTable) WithSuffix(suffix string) *BulletsTable {
return newBulletsTable(a.SchemaName(), a.TableName()+suffix, a.TableName())
}
func newBulletsTable(schemaName, tableName, alias string) *BulletsTable {
return &BulletsTable{
bulletsTable: newBulletsTableImpl(schemaName, tableName, alias),
EXCLUDED: newBulletsTableImpl("", "excluded", ""),
}
}
func newBulletsTableImpl(schemaName, tableName, alias string) bulletsTable {
var (
IDColumn = postgres.StringColumn("id")
NameColumn = postgres.StringColumn("name")
WeightColumn = postgres.IntegerColumn("weight")
DiameterColumn = postgres.IntegerColumn("diameter")
MetaColumn = postgres.StringColumn("meta")
PhotoColumn = postgres.ByteaColumn("photo")
ManufacturerIDColumn = postgres.StringColumn("manufacturer_id")
CreatedAtColumn = postgres.TimestampColumn("created_at")
allColumns = postgres.ColumnList{IDColumn, NameColumn, WeightColumn, DiameterColumn, MetaColumn, PhotoColumn, ManufacturerIDColumn, CreatedAtColumn}
mutableColumns = postgres.ColumnList{NameColumn, WeightColumn, DiameterColumn, MetaColumn, PhotoColumn, ManufacturerIDColumn, CreatedAtColumn}
defaultColumns = postgres.ColumnList{IDColumn, CreatedAtColumn}
)
return bulletsTable{
Table: postgres.NewTable(schemaName, tableName, alias, allColumns...),
//Columns
ID: IDColumn,
Name: NameColumn,
Weight: WeightColumn,
Diameter: DiameterColumn,
Meta: MetaColumn,
Photo: PhotoColumn,
ManufacturerID: ManufacturerIDColumn,
CreatedAt: CreatedAtColumn,
AllColumns: allColumns,
MutableColumns: mutableColumns,
DefaultColumns: defaultColumns,
}
}

View File

@@ -0,0 +1,87 @@
//
// Code generated by go-jet DO NOT EDIT.
//
// WARNING: Changes to this file may cause incorrect behavior
// and will be lost if the code is regenerated
//
package table
import (
"github.com/go-jet/jet/v2/postgres"
)
var Cartridges = newCartridgesTable("public", "cartridges", "")
type cartridgesTable struct {
postgres.Table
// Columns
ID postgres.ColumnString
Name postgres.ColumnString
CreatedAt postgres.ColumnTimestamp
Meta postgres.ColumnString
AllColumns postgres.ColumnList
MutableColumns postgres.ColumnList
DefaultColumns postgres.ColumnList
}
type CartridgesTable struct {
cartridgesTable
EXCLUDED cartridgesTable
}
// AS creates new CartridgesTable with assigned alias
func (a CartridgesTable) AS(alias string) *CartridgesTable {
return newCartridgesTable(a.SchemaName(), a.TableName(), alias)
}
// Schema creates new CartridgesTable with assigned schema name
func (a CartridgesTable) FromSchema(schemaName string) *CartridgesTable {
return newCartridgesTable(schemaName, a.TableName(), a.Alias())
}
// WithPrefix creates new CartridgesTable with assigned table prefix
func (a CartridgesTable) WithPrefix(prefix string) *CartridgesTable {
return newCartridgesTable(a.SchemaName(), prefix+a.TableName(), a.TableName())
}
// WithSuffix creates new CartridgesTable with assigned table suffix
func (a CartridgesTable) WithSuffix(suffix string) *CartridgesTable {
return newCartridgesTable(a.SchemaName(), a.TableName()+suffix, a.TableName())
}
func newCartridgesTable(schemaName, tableName, alias string) *CartridgesTable {
return &CartridgesTable{
cartridgesTable: newCartridgesTableImpl(schemaName, tableName, alias),
EXCLUDED: newCartridgesTableImpl("", "excluded", ""),
}
}
func newCartridgesTableImpl(schemaName, tableName, alias string) cartridgesTable {
var (
IDColumn = postgres.StringColumn("id")
NameColumn = postgres.StringColumn("name")
CreatedAtColumn = postgres.TimestampColumn("created_at")
MetaColumn = postgres.StringColumn("meta")
allColumns = postgres.ColumnList{IDColumn, NameColumn, CreatedAtColumn, MetaColumn}
mutableColumns = postgres.ColumnList{NameColumn, CreatedAtColumn, MetaColumn}
defaultColumns = postgres.ColumnList{IDColumn, CreatedAtColumn}
)
return cartridgesTable{
Table: postgres.NewTable(schemaName, tableName, alias, allColumns...),
//Columns
ID: IDColumn,
Name: NameColumn,
CreatedAt: CreatedAtColumn,
Meta: MetaColumn,
AllColumns: allColumns,
MutableColumns: mutableColumns,
DefaultColumns: defaultColumns,
}
}

View File

@@ -0,0 +1,105 @@
//
// Code generated by go-jet DO NOT EDIT.
//
// WARNING: Changes to this file may cause incorrect behavior
// and will be lost if the code is regenerated
//
package table
import (
"github.com/go-jet/jet/v2/postgres"
)
var Loads = newLoadsTable("public", "loads", "")
type loadsTable struct {
postgres.Table
// Columns
ID postgres.ColumnString
CartridgeID postgres.ColumnString
Col postgres.ColumnFloat
PowderID postgres.ColumnString
PowderGr postgres.ColumnFloat
PrimerID postgres.ColumnString
BulletID postgres.ColumnString
Photo postgres.ColumnBytea
CreatedAt postgres.ColumnTimestamp
Meta postgres.ColumnString
AllColumns postgres.ColumnList
MutableColumns postgres.ColumnList
DefaultColumns postgres.ColumnList
}
type LoadsTable struct {
loadsTable
EXCLUDED loadsTable
}
// AS creates new LoadsTable with assigned alias
func (a LoadsTable) AS(alias string) *LoadsTable {
return newLoadsTable(a.SchemaName(), a.TableName(), alias)
}
// Schema creates new LoadsTable with assigned schema name
func (a LoadsTable) FromSchema(schemaName string) *LoadsTable {
return newLoadsTable(schemaName, a.TableName(), a.Alias())
}
// WithPrefix creates new LoadsTable with assigned table prefix
func (a LoadsTable) WithPrefix(prefix string) *LoadsTable {
return newLoadsTable(a.SchemaName(), prefix+a.TableName(), a.TableName())
}
// WithSuffix creates new LoadsTable with assigned table suffix
func (a LoadsTable) WithSuffix(suffix string) *LoadsTable {
return newLoadsTable(a.SchemaName(), a.TableName()+suffix, a.TableName())
}
func newLoadsTable(schemaName, tableName, alias string) *LoadsTable {
return &LoadsTable{
loadsTable: newLoadsTableImpl(schemaName, tableName, alias),
EXCLUDED: newLoadsTableImpl("", "excluded", ""),
}
}
func newLoadsTableImpl(schemaName, tableName, alias string) loadsTable {
var (
IDColumn = postgres.StringColumn("id")
CartridgeIDColumn = postgres.StringColumn("cartridge_id")
ColColumn = postgres.FloatColumn("col")
PowderIDColumn = postgres.StringColumn("powder_id")
PowderGrColumn = postgres.FloatColumn("powder_gr")
PrimerIDColumn = postgres.StringColumn("primer_id")
BulletIDColumn = postgres.StringColumn("bullet_id")
PhotoColumn = postgres.ByteaColumn("photo")
CreatedAtColumn = postgres.TimestampColumn("created_at")
MetaColumn = postgres.StringColumn("meta")
allColumns = postgres.ColumnList{IDColumn, CartridgeIDColumn, ColColumn, PowderIDColumn, PowderGrColumn, PrimerIDColumn, BulletIDColumn, PhotoColumn, CreatedAtColumn, MetaColumn}
mutableColumns = postgres.ColumnList{CartridgeIDColumn, ColColumn, PowderIDColumn, PowderGrColumn, PrimerIDColumn, BulletIDColumn, PhotoColumn, CreatedAtColumn, MetaColumn}
defaultColumns = postgres.ColumnList{IDColumn, CreatedAtColumn}
)
return loadsTable{
Table: postgres.NewTable(schemaName, tableName, alias, allColumns...),
//Columns
ID: IDColumn,
CartridgeID: CartridgeIDColumn,
Col: ColColumn,
PowderID: PowderIDColumn,
PowderGr: PowderGrColumn,
PrimerID: PrimerIDColumn,
BulletID: BulletIDColumn,
Photo: PhotoColumn,
CreatedAt: CreatedAtColumn,
Meta: MetaColumn,
AllColumns: allColumns,
MutableColumns: mutableColumns,
DefaultColumns: defaultColumns,
}
}

View File

@@ -0,0 +1,87 @@
//
// Code generated by go-jet DO NOT EDIT.
//
// WARNING: Changes to this file may cause incorrect behavior
// and will be lost if the code is regenerated
//
package table
import (
"github.com/go-jet/jet/v2/postgres"
)
var Manufacturers = newManufacturersTable("public", "manufacturers", "")
type manufacturersTable struct {
postgres.Table
// Columns
ID postgres.ColumnString
Name postgres.ColumnString
URL postgres.ColumnString
CreatedAt postgres.ColumnTimestamp
AllColumns postgres.ColumnList
MutableColumns postgres.ColumnList
DefaultColumns postgres.ColumnList
}
type ManufacturersTable struct {
manufacturersTable
EXCLUDED manufacturersTable
}
// AS creates new ManufacturersTable with assigned alias
func (a ManufacturersTable) AS(alias string) *ManufacturersTable {
return newManufacturersTable(a.SchemaName(), a.TableName(), alias)
}
// Schema creates new ManufacturersTable with assigned schema name
func (a ManufacturersTable) FromSchema(schemaName string) *ManufacturersTable {
return newManufacturersTable(schemaName, a.TableName(), a.Alias())
}
// WithPrefix creates new ManufacturersTable with assigned table prefix
func (a ManufacturersTable) WithPrefix(prefix string) *ManufacturersTable {
return newManufacturersTable(a.SchemaName(), prefix+a.TableName(), a.TableName())
}
// WithSuffix creates new ManufacturersTable with assigned table suffix
func (a ManufacturersTable) WithSuffix(suffix string) *ManufacturersTable {
return newManufacturersTable(a.SchemaName(), a.TableName()+suffix, a.TableName())
}
func newManufacturersTable(schemaName, tableName, alias string) *ManufacturersTable {
return &ManufacturersTable{
manufacturersTable: newManufacturersTableImpl(schemaName, tableName, alias),
EXCLUDED: newManufacturersTableImpl("", "excluded", ""),
}
}
func newManufacturersTableImpl(schemaName, tableName, alias string) manufacturersTable {
var (
IDColumn = postgres.StringColumn("id")
NameColumn = postgres.StringColumn("name")
URLColumn = postgres.StringColumn("url")
CreatedAtColumn = postgres.TimestampColumn("created_at")
allColumns = postgres.ColumnList{IDColumn, NameColumn, URLColumn, CreatedAtColumn}
mutableColumns = postgres.ColumnList{NameColumn, URLColumn, CreatedAtColumn}
defaultColumns = postgres.ColumnList{IDColumn, CreatedAtColumn}
)
return manufacturersTable{
Table: postgres.NewTable(schemaName, tableName, alias, allColumns...),
//Columns
ID: IDColumn,
Name: NameColumn,
URL: URLColumn,
CreatedAt: CreatedAtColumn,
AllColumns: allColumns,
MutableColumns: mutableColumns,
DefaultColumns: defaultColumns,
}
}

View File

@@ -0,0 +1,93 @@
//
// Code generated by go-jet DO NOT EDIT.
//
// WARNING: Changes to this file may cause incorrect behavior
// and will be lost if the code is regenerated
//
package table
import (
"github.com/go-jet/jet/v2/postgres"
)
var Powders = newPowdersTable("public", "powders", "")
type powdersTable struct {
postgres.Table
// Columns
ID postgres.ColumnString
Name postgres.ColumnString
Meta postgres.ColumnString
Photo postgres.ColumnBytea
ManufacturerID postgres.ColumnString
CreatedAt postgres.ColumnTimestamp
AllColumns postgres.ColumnList
MutableColumns postgres.ColumnList
DefaultColumns postgres.ColumnList
}
type PowdersTable struct {
powdersTable
EXCLUDED powdersTable
}
// AS creates new PowdersTable with assigned alias
func (a PowdersTable) AS(alias string) *PowdersTable {
return newPowdersTable(a.SchemaName(), a.TableName(), alias)
}
// Schema creates new PowdersTable with assigned schema name
func (a PowdersTable) FromSchema(schemaName string) *PowdersTable {
return newPowdersTable(schemaName, a.TableName(), a.Alias())
}
// WithPrefix creates new PowdersTable with assigned table prefix
func (a PowdersTable) WithPrefix(prefix string) *PowdersTable {
return newPowdersTable(a.SchemaName(), prefix+a.TableName(), a.TableName())
}
// WithSuffix creates new PowdersTable with assigned table suffix
func (a PowdersTable) WithSuffix(suffix string) *PowdersTable {
return newPowdersTable(a.SchemaName(), a.TableName()+suffix, a.TableName())
}
func newPowdersTable(schemaName, tableName, alias string) *PowdersTable {
return &PowdersTable{
powdersTable: newPowdersTableImpl(schemaName, tableName, alias),
EXCLUDED: newPowdersTableImpl("", "excluded", ""),
}
}
func newPowdersTableImpl(schemaName, tableName, alias string) powdersTable {
var (
IDColumn = postgres.StringColumn("id")
NameColumn = postgres.StringColumn("name")
MetaColumn = postgres.StringColumn("meta")
PhotoColumn = postgres.ByteaColumn("photo")
ManufacturerIDColumn = postgres.StringColumn("manufacturer_id")
CreatedAtColumn = postgres.TimestampColumn("created_at")
allColumns = postgres.ColumnList{IDColumn, NameColumn, MetaColumn, PhotoColumn, ManufacturerIDColumn, CreatedAtColumn}
mutableColumns = postgres.ColumnList{NameColumn, MetaColumn, PhotoColumn, ManufacturerIDColumn, CreatedAtColumn}
defaultColumns = postgres.ColumnList{IDColumn, CreatedAtColumn}
)
return powdersTable{
Table: postgres.NewTable(schemaName, tableName, alias, allColumns...),
//Columns
ID: IDColumn,
Name: NameColumn,
Meta: MetaColumn,
Photo: PhotoColumn,
ManufacturerID: ManufacturerIDColumn,
CreatedAt: CreatedAtColumn,
AllColumns: allColumns,
MutableColumns: mutableColumns,
DefaultColumns: defaultColumns,
}
}

View File

@@ -0,0 +1,93 @@
//
// Code generated by go-jet DO NOT EDIT.
//
// WARNING: Changes to this file may cause incorrect behavior
// and will be lost if the code is regenerated
//
package table
import (
"github.com/go-jet/jet/v2/postgres"
)
var Primers = newPrimersTable("public", "primers", "")
type primersTable struct {
postgres.Table
// Columns
ID postgres.ColumnString
Name postgres.ColumnString
Meta postgres.ColumnString
Photo postgres.ColumnBytea
ManufacturerID postgres.ColumnString
CreatedAt postgres.ColumnTimestamp
AllColumns postgres.ColumnList
MutableColumns postgres.ColumnList
DefaultColumns postgres.ColumnList
}
type PrimersTable struct {
primersTable
EXCLUDED primersTable
}
// AS creates new PrimersTable with assigned alias
func (a PrimersTable) AS(alias string) *PrimersTable {
return newPrimersTable(a.SchemaName(), a.TableName(), alias)
}
// Schema creates new PrimersTable with assigned schema name
func (a PrimersTable) FromSchema(schemaName string) *PrimersTable {
return newPrimersTable(schemaName, a.TableName(), a.Alias())
}
// WithPrefix creates new PrimersTable with assigned table prefix
func (a PrimersTable) WithPrefix(prefix string) *PrimersTable {
return newPrimersTable(a.SchemaName(), prefix+a.TableName(), a.TableName())
}
// WithSuffix creates new PrimersTable with assigned table suffix
func (a PrimersTable) WithSuffix(suffix string) *PrimersTable {
return newPrimersTable(a.SchemaName(), a.TableName()+suffix, a.TableName())
}
func newPrimersTable(schemaName, tableName, alias string) *PrimersTable {
return &PrimersTable{
primersTable: newPrimersTableImpl(schemaName, tableName, alias),
EXCLUDED: newPrimersTableImpl("", "excluded", ""),
}
}
func newPrimersTableImpl(schemaName, tableName, alias string) primersTable {
var (
IDColumn = postgres.StringColumn("id")
NameColumn = postgres.StringColumn("name")
MetaColumn = postgres.StringColumn("meta")
PhotoColumn = postgres.ByteaColumn("photo")
ManufacturerIDColumn = postgres.StringColumn("manufacturer_id")
CreatedAtColumn = postgres.TimestampColumn("created_at")
allColumns = postgres.ColumnList{IDColumn, NameColumn, MetaColumn, PhotoColumn, ManufacturerIDColumn, CreatedAtColumn}
mutableColumns = postgres.ColumnList{NameColumn, MetaColumn, PhotoColumn, ManufacturerIDColumn, CreatedAtColumn}
defaultColumns = postgres.ColumnList{IDColumn, CreatedAtColumn}
)
return primersTable{
Table: postgres.NewTable(schemaName, tableName, alias, allColumns...),
//Columns
ID: IDColumn,
Name: NameColumn,
Meta: MetaColumn,
Photo: PhotoColumn,
ManufacturerID: ManufacturerIDColumn,
CreatedAt: CreatedAtColumn,
AllColumns: allColumns,
MutableColumns: mutableColumns,
DefaultColumns: defaultColumns,
}
}

View File

@@ -0,0 +1,81 @@
//
// Code generated by go-jet DO NOT EDIT.
//
// WARNING: Changes to this file may cause incorrect behavior
// and will be lost if the code is regenerated
//
package table
import (
"github.com/go-jet/jet/v2/postgres"
)
var SchemaMigrations = newSchemaMigrationsTable("public", "schema_migrations", "")
type schemaMigrationsTable struct {
postgres.Table
// Columns
Version postgres.ColumnInteger
Dirty postgres.ColumnBool
AllColumns postgres.ColumnList
MutableColumns postgres.ColumnList
DefaultColumns postgres.ColumnList
}
type SchemaMigrationsTable struct {
schemaMigrationsTable
EXCLUDED schemaMigrationsTable
}
// AS creates new SchemaMigrationsTable with assigned alias
func (a SchemaMigrationsTable) AS(alias string) *SchemaMigrationsTable {
return newSchemaMigrationsTable(a.SchemaName(), a.TableName(), alias)
}
// Schema creates new SchemaMigrationsTable with assigned schema name
func (a SchemaMigrationsTable) FromSchema(schemaName string) *SchemaMigrationsTable {
return newSchemaMigrationsTable(schemaName, a.TableName(), a.Alias())
}
// WithPrefix creates new SchemaMigrationsTable with assigned table prefix
func (a SchemaMigrationsTable) WithPrefix(prefix string) *SchemaMigrationsTable {
return newSchemaMigrationsTable(a.SchemaName(), prefix+a.TableName(), a.TableName())
}
// WithSuffix creates new SchemaMigrationsTable with assigned table suffix
func (a SchemaMigrationsTable) WithSuffix(suffix string) *SchemaMigrationsTable {
return newSchemaMigrationsTable(a.SchemaName(), a.TableName()+suffix, a.TableName())
}
func newSchemaMigrationsTable(schemaName, tableName, alias string) *SchemaMigrationsTable {
return &SchemaMigrationsTable{
schemaMigrationsTable: newSchemaMigrationsTableImpl(schemaName, tableName, alias),
EXCLUDED: newSchemaMigrationsTableImpl("", "excluded", ""),
}
}
func newSchemaMigrationsTableImpl(schemaName, tableName, alias string) schemaMigrationsTable {
var (
VersionColumn = postgres.IntegerColumn("version")
DirtyColumn = postgres.BoolColumn("dirty")
allColumns = postgres.ColumnList{VersionColumn, DirtyColumn}
mutableColumns = postgres.ColumnList{DirtyColumn}
defaultColumns = postgres.ColumnList{}
)
return schemaMigrationsTable{
Table: postgres.NewTable(schemaName, tableName, alias, allColumns...),
//Columns
Version: VersionColumn,
Dirty: DirtyColumn,
AllColumns: allColumns,
MutableColumns: mutableColumns,
DefaultColumns: defaultColumns,
}
}

View File

@@ -0,0 +1,20 @@
//
// Code generated by go-jet DO NOT EDIT.
//
// WARNING: Changes to this file may cause incorrect behavior
// and will be lost if the code is regenerated
//
package table
// UseSchema sets a new schema name for all generated table SQL builder types. It is recommended to invoke
// this method only once at the beginning of the program.
func UseSchema(schema string) {
Bullets = Bullets.FromSchema(schema)
Cartridges = Cartridges.FromSchema(schema)
Loads = Loads.FromSchema(schema)
Manufacturers = Manufacturers.FromSchema(schema)
Powders = Powders.FromSchema(schema)
Primers = Primers.FromSchema(schema)
SchemaMigrations = SchemaMigrations.FromSchema(schema)
}

View File

@@ -6,3 +6,7 @@ docker run -v $(pwd)/postgres:/var/lib/postgresql/data \
-p 5432:5432 \
-d scr.siteworxpro.com/library/postgres:17
```
```shell
jet -dsn=postgresql://postgres:password@localhost:5432/loading\?sslmode=disable -path=./.gen
```

View File

@@ -31,7 +31,7 @@ type Database struct {
Loads *loads.Queries
}
func (*Database) DSN() string {
func (*Database) DSN(hidePassword bool) string {
dbHost := DbHost.GetEnvString("localhost")
dbDatabase := DbDatabase.GetEnvString("loading")
dbUser := DbUser.GetEnvString("postgres")
@@ -39,13 +39,21 @@ func (*Database) DSN() string {
extraParams := "?sslmode=require"
if dbHost == "localhost" || dbHost == "127.0.0.1" {
extraParams = "?sslmode=disable"
}
if hidePassword {
dbPassword = "********"
}
return fmt.Sprintf("postgres://%s:%s@%s:5432/%s%s", dbUser, dbPassword, dbHost, dbDatabase, extraParams)
}
func GetNewDatabase() *Database {
var dbSingleton Database
conn, dbErr := pgx.Connect(context.Background(), dbSingleton.DSN())
conn, dbErr := pgx.Connect(context.Background(), dbSingleton.DSN(false))
if dbErr != nil {
log.Fatal(dbErr)
}

View File

@@ -10,7 +10,7 @@ import (
)
func (db *Database) Migrate() {
sqlDB, err := sql.Open("postgres", db.DSN())
sqlDB, err := sql.Open("postgres", db.DSN(false))
driver, err := postgres.WithInstance(sqlDB, &postgres.Config{
MigrationsTable: "schema_migrations",

View File

@@ -4,8 +4,9 @@ go 1.24.0
require (
git.siteworxpro.com/packages/go/utilities v1.3.0
github.com/go-jet/jet/v2 v2.13.0
github.com/go-playground/validator v9.31.0+incompatible
github.com/go-sql-driver/mysql v1.9.1
github.com/go-sql-driver/mysql v1.9.2
github.com/golang-migrate/migrate v3.5.4+incompatible
github.com/google/uuid v1.6.0
github.com/jackc/pgx/v5 v5.7.4
@@ -16,6 +17,7 @@ require (
require (
filippo.io/edwards25519 v1.1.0 // indirect
github.com/Microsoft/go-winio v0.6.1 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/distribution/reference v0.6.0 // indirect
github.com/docker/distribution v2.8.3+incompatible // indirect
github.com/docker/docker v24.0.5+incompatible // indirect
@@ -26,6 +28,7 @@ require (
github.com/gogo/protobuf v1.3.2 // indirect
github.com/jackc/pgpassfile v1.0.0 // indirect
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
github.com/kr/text v0.2.0 // indirect
github.com/leodido/go-urn v1.4.0 // indirect
github.com/lib/pq v1.10.9 // indirect
github.com/mattn/go-colorable v0.1.14 // indirect
@@ -33,12 +36,16 @@ require (
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.0.2 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/rogpeppe/go-internal v1.14.1 // indirect
github.com/stretchr/testify v1.10.0 // indirect
github.com/valyala/bytebufferpool v1.0.0 // indirect
github.com/valyala/fasttemplate v1.2.2 // indirect
golang.org/x/crypto v0.36.0 // indirect
golang.org/x/net v0.38.0 // indirect
golang.org/x/sys v0.31.0 // indirect
golang.org/x/text v0.23.0 // indirect
golang.org/x/crypto v0.37.0 // indirect
golang.org/x/net v0.39.0 // indirect
golang.org/x/sys v0.32.0 // indirect
golang.org/x/text v0.24.0 // indirect
golang.org/x/time v0.11.0 // indirect
gopkg.in/go-playground/assert.v1 v1.2.1 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)

View File

@@ -4,6 +4,7 @@ git.siteworxpro.com/packages/go/utilities v1.3.0 h1:931q66COBJATgIQksPDSZlWMIwEN
git.siteworxpro.com/packages/go/utilities v1.3.0/go.mod h1:iWhICNrMnB03PY9dM9eCNs9uQPEsPwae5pJDG+HHUPI=
github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow=
github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -17,18 +18,22 @@ github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKoh
github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/go-jet/jet/v2 v2.13.0 h1:DcD2IJRGos+4X40IQRV6S6q9onoOfZY/GPdvU6ImZcQ=
github.com/go-jet/jet/v2 v2.13.0/go.mod h1:YhT75U1FoYAxFOObbQliHmXVYQeffkBKWT7ZilZ3zPc=
github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
github.com/go-playground/validator v9.31.0+incompatible h1:UA72EPEogEnq76ehGdEDp4Mit+3FDh548oRqwVgNsHA=
github.com/go-playground/validator v9.31.0+incompatible/go.mod h1:yrEkQXlcI+PugkyDjY2bRrL/UBU4f3rvrgkN3V8JEig=
github.com/go-sql-driver/mysql v1.9.1 h1:FrjNGn/BsJQjVRuSa8CBrM5BWA9BWoXXat3KrtSb/iI=
github.com/go-sql-driver/mysql v1.9.1/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU=
github.com/go-sql-driver/mysql v1.9.2 h1:4cNKDYQ1I84SXslGddlsrMhc8k4LeDVj6Ad6WRjiHuU=
github.com/go-sql-driver/mysql v1.9.2/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-migrate/migrate v3.5.4+incompatible h1:R7OzwvCJTCgwapPCiX6DyBiu2czIUMDCB118gFTKTUA=
github.com/golang-migrate/migrate v3.5.4+incompatible/go.mod h1:IsVUlFN5puWOmXrqjgGUfIRIbU7mr8oNBE2tyERd9Wk=
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
@@ -41,6 +46,10 @@ github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo
github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/labstack/echo/v4 v4.13.3 h1:pwhpCPrTl5qry5HRdM5FwdXnhXSLSY+WE+YQSeCaafY=
github.com/labstack/echo/v4 v4.13.3/go.mod h1:o90YNEeQWjDozo584l7AwhJMHN0bOC4tAfg+Xox9q5g=
github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0=
@@ -61,6 +70,8 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
@@ -75,46 +86,48 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE=
golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA=
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0=
golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY=
golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw=
golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610=
golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20=
golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0=
golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU=
golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0=
golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
golang.org/x/tools v0.26.0 h1:v/60pFQmzmT9ExmjDv2gGIfi3OqfKoEP6I5+umXlbnQ=
golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/go-playground/assert.v1 v1.2.1 h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXadIrXTM=
gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

View File

@@ -2,15 +2,45 @@ package loads
import (
"context"
"fmt"
"git.siteworxpro.com/reloading-manager/backend/.gen/loading/public/table"
"git.siteworxpro.com/reloading-manager/backend/database"
"git.siteworxpro.com/reloading-manager/backend/handlers"
"git.siteworxpro.com/reloading-manager/backend/handlers/bullets"
"git.siteworxpro.com/reloading-manager/backend/handlers/primers"
"git.siteworxpro.com/reloading-manager/backend/models/loads"
"github.com/go-jet/jet/v2/postgres"
"github.com/jackc/pgx/v5/pgtype"
"github.com/labstack/echo/v4"
"net/http"
)
type row struct {
ID pgtype.UUID
Col float32
PowderGr float32
CartridgeID pgtype.UUID
CartridgeName string
CartridgeMeta []byte
BulletID pgtype.UUID
BulletName string
BulletDiameter int32
BulletWeight int32
BulletMeta []byte
BulletManufacturerName string
BulletManufacturerUrl pgtype.Text
PrimerID pgtype.UUID
PrimerName string
PrimerMeta []byte
PrimerManufacturerName string
PrimerManufacturerUrl pgtype.Text
PowderID pgtype.UUID
PowderName string
PowderMeta []byte
PowderManufacturerName string
PowderManufacturerUrl pgtype.Text
}
type loadResponseResults struct {
Id string `json:"id"`
Cartridge string `json:"cartridge"`
@@ -103,58 +133,42 @@ func Post(c echo.Context) error {
}
func Get(c echo.Context) error {
db := c.(*database.CustomContext).Db
defer db.Db.Close(context.Background())
cTotal := make(chan ResultChan[int64])
cResults := make(chan ResultChan[[]loadResponseResults])
go func(c chan ResultChan[int64]) {
go func(ch chan ResultChan[int64]) {
db := database.GetNewDatabase()
defer db.Db.Close(context.Background())
total, err := db.Loads.TotalLoads(context.Background())
q := getQuery(c, true)
sql, params := q.Sql()
var total int64
r := db.Db.QueryRow(context.Background(), sql, params...)
err := r.Scan(&total)
if err != nil {
c <- ResultChan[int64]{Err: err}
ch <- ResultChan[int64]{Err: err}
} else {
c <- ResultChan[int64]{Result: total}
ch <- ResultChan[int64]{Result: total}
}
}(cTotal)
go func(ch chan ResultChan[[]loadResponseResults]) {
db := database.GetNewDatabase()
rows, err := db.Loads.GetLoads(context.Background(), loads.GetLoadsParams{
Limit: handlers.ParseInt32WithDefault(c.QueryParam("limit"), 50),
Offset: handlers.ParseInt32WithDefault(c.QueryParam("offset"), 0),
defer db.Db.Close(context.Background())
OrderBy: "cartridge_name asc",
q := getQuery(c, false)
SearchCartridge: c.QueryParam("search_cartridge") != "",
Cartridge: c.QueryParam("search_cartridge"),
SearchBullet: c.QueryParam("search_bullet") != "",
Bullet: c.QueryParam("search_bullet") + "%",
SearchBulletManufacturer: c.QueryParam("search_bullet_manufacturer") != "",
BulletManufacturer: c.QueryParam("search_bullet_manufacturer") + "%",
SearchPrimer: c.QueryParam("search_primer") != "",
Primer: c.QueryParam("search_primer") + "%",
SearchPrimerManufacturer: c.QueryParam("search_primer_manufacturer") != "",
PrimeManufacturer: c.QueryParam("search_primer_manufacturer") + "%",
SearchPowder: c.QueryParam("search_powder") != "",
Powder: c.QueryParam("search_powder") + "%",
SearchPowderManufacturer: c.QueryParam("search_powder_manufacturer") != "",
PowderManufacturer: c.QueryParam("search_powder_manufacturer") + "%",
fmt.Println(q.DebugSql())
sql, params := q.Sql()
rows, err := db.Db.Query(context.Background(), sql, params...)
SearchCartridgeID: c.QueryParam("search_cartridge_id") != "",
CartridgeID: *handlers.ParseUuidOrEmpty(c.QueryParam("search_cartridge_id")),
SearchBulletID: c.QueryParam("search_bullet_id") != "",
BulletID: *handlers.ParseUuidOrEmpty(c.QueryParam("search_bullet_id")),
SearchPrimerID: c.QueryParam("search_primer_id") != "",
PrimerID: *handlers.ParseUuidOrEmpty(c.QueryParam("search_primer_id")),
SearchPowderID: c.QueryParam("search_powder_id") != "",
PowderID: *handlers.ParseUuidOrEmpty(c.QueryParam("search_powder_id")),
})
if err != nil {
ch <- ResultChan[[]loadResponseResults]{Err: err}
@@ -162,7 +176,44 @@ func Get(c echo.Context) error {
}
results := make([]loadResponseResults, 0)
for _, row := range rows {
for rows.Next() {
row := row{}
err = rows.Scan(
&row.ID,
&row.Col,
&row.PowderGr,
&row.CartridgeID,
&row.CartridgeName,
&row.CartridgeMeta,
&row.BulletID,
&row.BulletName,
&row.BulletDiameter,
&row.BulletWeight,
&row.BulletMeta,
&row.BulletManufacturerName,
&row.BulletManufacturerUrl,
&row.PrimerID,
&row.PrimerName,
&row.PrimerMeta,
&row.PrimerManufacturerName,
&row.PrimerManufacturerUrl,
&row.PowderID,
&row.PowderName,
&row.PowderMeta,
&row.PowderManufacturerName,
&row.PowderManufacturerUrl,
)
if err != nil {
ch <- ResultChan[[]loadResponseResults]{Err: err}
return
}
results = append(results, loadResponseResults{
Id: row.ID.String(),
Cartridge: row.CartridgeName,
@@ -213,3 +264,135 @@ func Get(c echo.Context) error {
return c.JSON(http.StatusOK, handlers.Response[loadResponse]{Status: http.StatusText(http.StatusOK), Payload: loadResponse{Total: int(total.Result), Results: results.Result}})
}
func getQuery(c echo.Context, countOnly bool) postgres.SelectStatement {
l := table.Loads.AS("l")
ctg := table.Cartridges.AS("c")
b := table.Bullets.AS("b")
bm := table.Manufacturers.AS("b_m")
p := table.Primers.AS("p")
pm := table.Manufacturers.AS("p_m")
pwd := table.Powders.AS("pw")
pwdm := table.Manufacturers.AS("pw_m")
tb := l.
INNER_JOIN(ctg, l.CartridgeID.EQ(ctg.ID)).
INNER_JOIN(b, l.BulletID.EQ(b.ID)).
INNER_JOIN(bm, b.ManufacturerID.EQ(bm.ID)).
INNER_JOIN(p, l.PrimerID.EQ(p.ID)).
INNER_JOIN(pm, p.ManufacturerID.EQ(pm.ID)).
INNER_JOIN(pwd, l.PowderID.EQ(pwd.ID)).
INNER_JOIN(pwdm, pwd.ManufacturerID.EQ(pwdm.ID))
var q postgres.SelectStatement
if countOnly {
q = tb.SELECT(postgres.COUNT(l.ID).AS("total"))
} else {
q = tb.SELECT(
// Load
l.ID.AS("id"),
l.Col.AS("col"),
l.PowderGr.AS("powder_gr"),
// Cartridge
ctg.ID.AS("cartridge_id"),
ctg.Name.AS("cartridge_name"),
ctg.Meta.AS("cartridge_meta"),
// Bullet
b.ID.AS("bullet_id"),
b.Name.AS("bullet_name"),
b.Diameter.AS("bullet_diameter"),
b.Weight.AS("bullet_weight"),
b.Meta.AS("bullet_meta"),
bm.Name.AS("bullet_manufacturer_name"),
bm.URL.AS("bullet_manufacturer_url"),
// Primer
p.ID.AS("primer_id"),
p.Name.AS("primer_name"),
p.Meta.AS("primer_meta"),
pm.Name.AS("primer_manufacturer_name"),
pm.URL.AS("primer_manufacturer_url"),
// Powder
pwd.ID.AS("powder_id"),
pwd.Name.AS("powder_name"),
pwd.Meta.AS("powder_meta"),
pwdm.Name.AS("powder_manufacturer_name"),
pwdm.URL.AS("powder_manufacturer_url"),
)
}
expressions := make([]postgres.BoolExpression, 0)
if c.QueryParam("search_cartridge") != "" {
expressions = append(expressions, ctg.Name.LIKE(postgres.String(c.QueryParam("search_cartridge")+"%")))
}
if c.QueryParam("search_bullet") != "" {
expressions = append(expressions, b.Name.LIKE(postgres.String(c.QueryParam("search_bullet")+"%")))
}
var where postgres.BoolExpression
if len(expressions) > 0 {
for _, expr := range expressions {
if where == nil {
where = expr
} else {
where = where.AND(expr)
}
}
}
if where != nil {
q = q.WHERE(where)
}
if countOnly {
return q
}
orderBy := c.QueryParam("sortField")
var sort postgres.Column
switch orderBy {
case "cartridge_name":
sort = ctg.Name
case "bullet_name":
sort = b.Name
case "bullet_manufacturer_name":
sort = bm.Name
case "primer_manufacturer_name":
sort = pm.Name
case "primer_name":
sort = p.Name
case "powder_manufacturer_name":
sort = pwdm.Name
case "powder_namd":
sort = pwd.Name
case "powder_grs":
sort = l.PowderGr
default:
sort = ctg.Name
}
if c.QueryParam("sortOrder") == "-1" {
q.ORDER_BY(sort.DESC())
} else {
q.ORDER_BY(sort.ASC())
}
limit := c.QueryParam("limit")
if limit == "" {
limit = "50"
}
offset := c.QueryParam("offset")
if offset == "" {
offset = "0"
}
q = q.LIMIT(handlers.ParseInt64OrDefault(limit, 50)).
OFFSET(handlers.ParseInt64OrDefault(offset, 0))
return q
}

View File

@@ -19,3 +19,12 @@ func ParseInt32WithDefault(s string, def int32) int32 {
return int32(sInt)
}
func ParseInt64OrDefault(s string, def int64) int64 {
sInt, err := strconv.ParseInt(s, 10, 64)
if err != nil {
return def
}
return sInt
}

View File

@@ -103,6 +103,7 @@ func main() {
addr := fmt.Sprintf("0.0.0.0:%s", Port.GetEnvString("8080"))
e.Logger.Info("🚀 Starting Server...")
e.Logger.Infof("🔌 Connecting to database... %s", database.GetNewDatabase().DSN(true))
e.Logger.Infof("🎧 Listening on %v", addr)
e.Logger.Fatal(e.Start(addr))
}

View File

@@ -1,6 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.27.0
// sqlc v1.29.0
// source: bullets.sql
package bullets

View File

@@ -1,6 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.27.0
// sqlc v1.29.0
package bullets

View File

@@ -1,6 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.27.0
// sqlc v1.29.0
package bullets

View File

@@ -64,7 +64,7 @@ select l.id as id,
pr.meta as primer_meta,
pr_m.name as primer_manufacturer_name,
pr_m.url as primer_manufacturer_url,
b.id as bullet_id,
b.id as bullet_id,
b.name as bullet_name,
b.meta as bullet_meta,
b.weight as bullet_weight,
@@ -96,5 +96,13 @@ where 1 = 1
AND (CASE WHEN @search_primer_id::bool THEN pr.id = @primer_id::uuid ELSE TRUE END)
AND (CASE WHEN @search_powder_id::bool THEN p.id = @powder_id::uuid ELSE TRUE END)
order by @order_by
order by (case
when @order_by = 'cartridge_name' then c.name
when @order_by = 'bullet_name' then b.name
when @order_by = 'bullet_manufacturer_name' then b_m.name
when @order_by = 'primer_manufacturer_name' then pr_m.name
when @order_by = 'powder_manufacturer_name' then p_m.name
when @order_by::text = 'powder_gr' then l.powder_gr
end)
limit $1 offset $2;

View File

@@ -1,6 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.27.0
// sqlc v1.29.0
package loads

View File

@@ -1,6 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.27.0
// sqlc v1.29.0
// source: loads.sql
package loads
@@ -197,7 +197,7 @@ select l.id as id,
pr.meta as primer_meta,
pr_m.name as primer_manufacturer_name,
pr_m.url as primer_manufacturer_url,
b.id as bullet_id,
b.id as bullet_id,
b.name as bullet_name,
b.meta as bullet_meta,
b.weight as bullet_weight,
@@ -229,7 +229,15 @@ where 1 = 1
AND (CASE WHEN $21::bool THEN pr.id = $22::uuid ELSE TRUE END)
AND (CASE WHEN $23::bool THEN p.id = $24::uuid ELSE TRUE END)
order by $25
order by (case
when $25 = 'cartridge_name' then c.name
when $25 = 'bullet_name' then b.name
when $25 = 'bullet_manufacturer_name' then b_m.name
when $25 = 'primer_manufacturer_name' then pr_m.name
when $25 = 'powder_manufacturer_name' then p_m.name
when $25::text = 'powder_gr' then l.powder_gr
end)
limit $1 offset $2
`

View File

@@ -1,6 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.27.0
// sqlc v1.29.0
package loads

View File

@@ -1,6 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.27.0
// sqlc v1.29.0
package manufacturer

View File

@@ -1,6 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.27.0
// sqlc v1.29.0
// source: manufacturer.sql
package manufacturer

View File

@@ -1,6 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.27.0
// sqlc v1.29.0
package manufacturer

View File

@@ -1,6 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.27.0
// sqlc v1.29.0
package powder

View File

@@ -1,6 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.27.0
// sqlc v1.29.0
package powder

View File

@@ -1,6 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.27.0
// sqlc v1.29.0
// source: powder.sql
package powder

View File

@@ -1,6 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.27.0
// sqlc v1.29.0
package primers

View File

@@ -1,6 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.27.0
// sqlc v1.29.0
package primers

View File

@@ -1,6 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.27.0
// sqlc v1.29.0
// source: primers.sql
package primers

1
frontend/.gitignore vendored
View File

@@ -22,3 +22,4 @@ dist-ssr
*.njsproj
*.sln
*.sw?
.env

View File

@@ -8,6 +8,10 @@
:value="loads"
filterDisplay="row"
paginator
:sortField="sortField"
:sortOrder="sortOrder"
@update:sortField="(e: string) => {sortField = e; fetchLoads()}"
@update:sortOrder="(e: number | undefined) => {sortOrder = e; fetchLoads()}"
lazy
:rows="50"
:totalRecords="total"
@@ -19,7 +23,7 @@
</div>
</template>
<Column field="cartridge" header="Name" :sortable="true" :showFilterMenu="false">
<Column field="cartridge_name" header="Name" :sortable="true" :showFilterMenu="false">
<template #filter>
<Select />
</template>
@@ -29,7 +33,7 @@
</Column>
<Column field="bulletManufacturer" header="Bullet Manufacturer" :sortable="true" :showFilterMenu="false">
<Column field="bullet_manufacturer_name" header="Bullet Manufacturer" :sortable="true" :showFilterMenu="false">
<template #filter>
<Select />
</template>
@@ -37,7 +41,7 @@
{{ data.bullet.manufacturer.name }}
</template>
</Column>
<Column header="Bullet" :sortable="true" :showFilterMenu="false">
<Column field="bullet_name" header="Bullet" :sortable="true" :showFilterMenu="false">
<template #filter>
<Select />
</template>
@@ -47,36 +51,36 @@
.{{ data.bullet.diameter }}
</template>
</Column>
<Column field="name" header="Primer Manufacturer" :sortable="true">
<Column field="primer_manufacturer_name" header="Primer Manufacturer" :sortable="true">
<template #body="{ data }">
{{ data.primer.manufacturer.name }}
</template>
</Column>
<Column field="name" header="Primer" :sortable="true">
<Column field="primer_name" header="Primer" :sortable="true">
<template #body="{ data }">
{{ data.primer.name }}
</template>
</Column>
<Column field="name" header="Powder Manufacturer" :sortable="true">
<Column field="powder_manufacturer_name" header="Powder Manufacturer" :sortable="true">
<template #body="{ data }">
{{ data.powder.manufacturer.name }}
</template>
</Column>
<Column field="name" header="Powder" :sortable="true">
<Column field="powder_name" header="Powder" :sortable="true">
<template #body="{ data }">
{{ data.powder.name }}
</template>
</Column>
<Column field="name" header="Powder Grs" :sortable="true">
<Column field="powder_gr" header="Powder Grs" :sortable="true">
<template #body="{ data }">
{{ data.powder_gr }}gr
</template>
</Column>
<Column field="name" header="Edit">
<Column field="edit" header="Edit">
<template #body>
<Button size="small" text :icon="icons.edit" />
</template>
@@ -121,10 +125,23 @@ const loads = ref<Load[]>([])
const total = ref(0)
const loading = ref(true)
const sortField = ref('cartridge_name')
const sortOrder = ref<number | undefined>(-1)
const fetchLoads = async () => {
loading.value = true
const resp = await axios.get<any, Response<LoadResponse>>(`${import.meta.env.VITE_API}/load`)
const searchParams = []
searchParams.unshift(`sortField=${sortField.value}`)
if (sortOrder.value) {
searchParams.unshift(`sortOrder=${sortOrder.value}`)
}
console.log(searchParams)
const resp = await axios.get<any, Response<LoadResponse>>(`${import.meta.env.VITE_API}/load?${searchParams.join('&')}`)
loads.value = resp.data.payload.results
total.value = resp.data.payload.total