diff --git a/backend/.gen/loading/public/model/bullets.go b/backend/.gen/loading/public/model/bullets.go new file mode 100644 index 0000000..25b2765 --- /dev/null +++ b/backend/.gen/loading/public/model/bullets.go @@ -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 +} diff --git a/backend/.gen/loading/public/model/cartridges.go b/backend/.gen/loading/public/model/cartridges.go new file mode 100644 index 0000000..fb93bcb --- /dev/null +++ b/backend/.gen/loading/public/model/cartridges.go @@ -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 +} diff --git a/backend/.gen/loading/public/model/loads.go b/backend/.gen/loading/public/model/loads.go new file mode 100644 index 0000000..0b874ff --- /dev/null +++ b/backend/.gen/loading/public/model/loads.go @@ -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 +} diff --git a/backend/.gen/loading/public/model/manufacturers.go b/backend/.gen/loading/public/model/manufacturers.go new file mode 100644 index 0000000..e93308f --- /dev/null +++ b/backend/.gen/loading/public/model/manufacturers.go @@ -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 +} diff --git a/backend/.gen/loading/public/model/powders.go b/backend/.gen/loading/public/model/powders.go new file mode 100644 index 0000000..b25b2ad --- /dev/null +++ b/backend/.gen/loading/public/model/powders.go @@ -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 +} diff --git a/backend/.gen/loading/public/model/primers.go b/backend/.gen/loading/public/model/primers.go new file mode 100644 index 0000000..eb609d3 --- /dev/null +++ b/backend/.gen/loading/public/model/primers.go @@ -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 +} diff --git a/backend/.gen/loading/public/model/schema_migrations.go b/backend/.gen/loading/public/model/schema_migrations.go new file mode 100644 index 0000000..6c984b6 --- /dev/null +++ b/backend/.gen/loading/public/model/schema_migrations.go @@ -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 +} diff --git a/backend/.gen/loading/public/table/bullets.go b/backend/.gen/loading/public/table/bullets.go new file mode 100644 index 0000000..b5abace --- /dev/null +++ b/backend/.gen/loading/public/table/bullets.go @@ -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, + } +} diff --git a/backend/.gen/loading/public/table/cartridges.go b/backend/.gen/loading/public/table/cartridges.go new file mode 100644 index 0000000..b0fc53f --- /dev/null +++ b/backend/.gen/loading/public/table/cartridges.go @@ -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, + } +} diff --git a/backend/.gen/loading/public/table/loads.go b/backend/.gen/loading/public/table/loads.go new file mode 100644 index 0000000..b52e257 --- /dev/null +++ b/backend/.gen/loading/public/table/loads.go @@ -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, + } +} diff --git a/backend/.gen/loading/public/table/manufacturers.go b/backend/.gen/loading/public/table/manufacturers.go new file mode 100644 index 0000000..7c9ae4e --- /dev/null +++ b/backend/.gen/loading/public/table/manufacturers.go @@ -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, + } +} diff --git a/backend/.gen/loading/public/table/powders.go b/backend/.gen/loading/public/table/powders.go new file mode 100644 index 0000000..4cfe495 --- /dev/null +++ b/backend/.gen/loading/public/table/powders.go @@ -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, + } +} diff --git a/backend/.gen/loading/public/table/primers.go b/backend/.gen/loading/public/table/primers.go new file mode 100644 index 0000000..f9c3417 --- /dev/null +++ b/backend/.gen/loading/public/table/primers.go @@ -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, + } +} diff --git a/backend/.gen/loading/public/table/schema_migrations.go b/backend/.gen/loading/public/table/schema_migrations.go new file mode 100644 index 0000000..96ff11f --- /dev/null +++ b/backend/.gen/loading/public/table/schema_migrations.go @@ -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, + } +} diff --git a/backend/.gen/loading/public/table/table_use_schema.go b/backend/.gen/loading/public/table/table_use_schema.go new file mode 100644 index 0000000..44a42ab --- /dev/null +++ b/backend/.gen/loading/public/table/table_use_schema.go @@ -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) +} diff --git a/backend/README.md b/backend/README.md index 9f36a8d..49ef124 100644 --- a/backend/README.md +++ b/backend/README.md @@ -5,4 +5,8 @@ docker run -v $(pwd)/postgres:/var/lib/postgresql/data \ --rm --name postgres \ -p 5432:5432 \ -d scr.siteworxpro.com/library/postgres:17 +``` + +```shell +jet -dsn=postgresql://postgres:password@localhost:5432/loading\?sslmode=disable -path=./.gen ``` \ No newline at end of file diff --git a/backend/database/conn.go b/backend/database/conn.go index 9ebef74..3160c4d 100644 --- a/backend/database/conn.go +++ b/backend/database/conn.go @@ -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) } diff --git a/backend/database/migrate.go b/backend/database/migrate.go index 2c3b53c..991ae73 100644 --- a/backend/database/migrate.go +++ b/backend/database/migrate.go @@ -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", diff --git a/backend/go.mod b/backend/go.mod index f37bda3..f6dd2ec 100644 --- a/backend/go.mod +++ b/backend/go.mod @@ -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 ) diff --git a/backend/go.sum b/backend/go.sum index ab79374..7b05b45 100644 --- a/backend/go.sum +++ b/backend/go.sum @@ -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= diff --git a/backend/handlers/loads/handler.go b/backend/handlers/loads/handler.go index 6108a8c..9b8315e 100644 --- a/backend/handlers/loads/handler.go +++ b/backend/handlers/loads/handler.go @@ -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 +} diff --git a/backend/handlers/numbers.go b/backend/handlers/numbers.go index 646856b..5646564 100644 --- a/backend/handlers/numbers.go +++ b/backend/handlers/numbers.go @@ -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 +} diff --git a/backend/main.go b/backend/main.go index ad4d549..fd9a982 100644 --- a/backend/main.go +++ b/backend/main.go @@ -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)) } diff --git a/backend/models/bullets/bullets.sql.go b/backend/models/bullets/bullets.sql.go index 8d422ca..7356b5d 100644 --- a/backend/models/bullets/bullets.sql.go +++ b/backend/models/bullets/bullets.sql.go @@ -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 diff --git a/backend/models/bullets/db.go b/backend/models/bullets/db.go index 752a4aa..6ded783 100644 --- a/backend/models/bullets/db.go +++ b/backend/models/bullets/db.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.27.0 +// sqlc v1.29.0 package bullets diff --git a/backend/models/bullets/models.go b/backend/models/bullets/models.go index dc4cde5..aec3891 100644 --- a/backend/models/bullets/models.go +++ b/backend/models/bullets/models.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.27.0 +// sqlc v1.29.0 package bullets diff --git a/backend/models/loads.sql b/backend/models/loads.sql index 53b8df2..94f5077 100644 --- a/backend/models/loads.sql +++ b/backend/models/loads.sql @@ -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; \ No newline at end of file diff --git a/backend/models/loads/db.go b/backend/models/loads/db.go index 36ef31c..a8e18b3 100644 --- a/backend/models/loads/db.go +++ b/backend/models/loads/db.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.27.0 +// sqlc v1.29.0 package loads diff --git a/backend/models/loads/loads.sql.go b/backend/models/loads/loads.sql.go index 4a1d7d7..af17e6f 100644 --- a/backend/models/loads/loads.sql.go +++ b/backend/models/loads/loads.sql.go @@ -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 ` diff --git a/backend/models/loads/models.go b/backend/models/loads/models.go index 6aae061..8e51bcf 100644 --- a/backend/models/loads/models.go +++ b/backend/models/loads/models.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.27.0 +// sqlc v1.29.0 package loads diff --git a/backend/models/manufacturer/db.go b/backend/models/manufacturer/db.go index f4f84f6..1e92344 100644 --- a/backend/models/manufacturer/db.go +++ b/backend/models/manufacturer/db.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.27.0 +// sqlc v1.29.0 package manufacturer diff --git a/backend/models/manufacturer/manufacturer.sql.go b/backend/models/manufacturer/manufacturer.sql.go index 9d4d5cd..8036149 100644 --- a/backend/models/manufacturer/manufacturer.sql.go +++ b/backend/models/manufacturer/manufacturer.sql.go @@ -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 diff --git a/backend/models/manufacturer/models.go b/backend/models/manufacturer/models.go index 2203614..392dceb 100644 --- a/backend/models/manufacturer/models.go +++ b/backend/models/manufacturer/models.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.27.0 +// sqlc v1.29.0 package manufacturer diff --git a/backend/models/powder/db.go b/backend/models/powder/db.go index 4cc6e42..d967dcf 100644 --- a/backend/models/powder/db.go +++ b/backend/models/powder/db.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.27.0 +// sqlc v1.29.0 package powder diff --git a/backend/models/powder/models.go b/backend/models/powder/models.go index cf42d90..1d10b5f 100644 --- a/backend/models/powder/models.go +++ b/backend/models/powder/models.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.27.0 +// sqlc v1.29.0 package powder diff --git a/backend/models/powder/powder.sql.go b/backend/models/powder/powder.sql.go index b47a5bc..b7909da 100644 --- a/backend/models/powder/powder.sql.go +++ b/backend/models/powder/powder.sql.go @@ -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 diff --git a/backend/models/primers/db.go b/backend/models/primers/db.go index d9f879e..a36f221 100644 --- a/backend/models/primers/db.go +++ b/backend/models/primers/db.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.27.0 +// sqlc v1.29.0 package primers diff --git a/backend/models/primers/models.go b/backend/models/primers/models.go index 2fc1e50..ac5ee99 100644 --- a/backend/models/primers/models.go +++ b/backend/models/primers/models.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.27.0 +// sqlc v1.29.0 package primers diff --git a/backend/models/primers/primers.sql.go b/backend/models/primers/primers.sql.go index 400a5e8..31e6ae8 100644 --- a/backend/models/primers/primers.sql.go +++ b/backend/models/primers/primers.sql.go @@ -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 diff --git a/frontend/.gitignore b/frontend/.gitignore index a547bf3..1cac559 100644 --- a/frontend/.gitignore +++ b/frontend/.gitignore @@ -22,3 +22,4 @@ dist-ssr *.njsproj *.sln *.sw? +.env \ No newline at end of file diff --git a/frontend/src/pages/loads/Search.vue b/frontend/src/pages/loads/Search.vue index 5374f30..00fa07a 100644 --- a/frontend/src/pages/loads/Search.vue +++ b/frontend/src/pages/loads/Search.vue @@ -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 @@ - + @@ -29,7 +33,7 @@ - + @@ -37,7 +41,7 @@ {{ data.bullet.manufacturer.name }} - + @@ -47,36 +51,36 @@ .{{ data.bullet.diameter }} - + - + - + - + - + - + @@ -121,10 +125,23 @@ const loads = ref([]) const total = ref(0) const loading = ref(true) +const sortField = ref('cartridge_name') +const sortOrder = ref(-1) + const fetchLoads = async () => { loading.value = true - const resp = await axios.get>(`${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>(`${import.meta.env.VITE_API}/load?${searchParams.join('&')}`) loads.value = resp.data.payload.results total.value = resp.data.payload.total