Skip to content

Commit 480c9bc

Browse files
authored
Merge pull request #8 from lowsideio/beta
Next release
2 parents e2e8780 + fa1bfb7 commit 480c9bc

9 files changed

Lines changed: 88 additions & 65 deletions

File tree

core-api

-56.7 KB
Binary file not shown.

handlers/motorcycle.go

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,37 @@ import (
1111
"github.com/labstack/echo"
1212
)
1313

14+
func GetMotorcycleByslug(c echo.Context) error {
15+
dc := c.(*utils.RequestContext)
16+
17+
var motorcycle models.MotorcycleModel
18+
19+
slug := c.Param("slug")
20+
21+
if err := dc.Db().Table("motorcycles_models").Where("slug = ?", slug).First(&motorcycle).Error; err != nil {
22+
return c.JSON(404, err)
23+
}
24+
25+
return c.JSON(http.StatusOK, motorcycle)
26+
}
27+
28+
func GetMotorcycleSpecsByModelId(c echo.Context) error {
29+
dc := c.(*utils.RequestContext)
30+
31+
var motorcycles []models.Motorcycle
32+
33+
id := c.Param("id")
34+
35+
if err := dc.Db().Table("motorcycles_specs").Where("motorcycle_model_id = ?", id).Find(&motorcycles).Error; err != nil {
36+
return c.JSON(404, err)
37+
}
38+
39+
return c.JSON(http.StatusOK, motorcycles)
40+
}
41+
42+
1443
func GetMotorcycle(c echo.Context) error {
15-
dc := c.(*utils.DatabaseContext)
44+
dc := c.(*utils.RequestContext)
1645

1746
var motorcycle models.Motorcycle
1847

@@ -26,7 +55,7 @@ func GetMotorcycle(c echo.Context) error {
2655
}
2756

2857
func GetMotorcycles(c echo.Context) error {
29-
dc := c.(*utils.DatabaseContext)
58+
dc := c.(*utils.RequestContext)
3059

3160
var motorcycles []models.Motorcycle
3261
var count int64
@@ -48,7 +77,7 @@ func GetMotorcycles(c echo.Context) error {
4877
}
4978

5079
func PutMotorcycle(c echo.Context) error {
51-
dc := c.(*utils.DatabaseContext)
80+
dc := c.(*utils.RequestContext)
5281

5382
m := &models.Motorcycle{}
5483
newVersion := &models.Motorcycle{}
@@ -66,7 +95,7 @@ func PutMotorcycle(c echo.Context) error {
6695

6796

6897
func PostMotorcycles(c echo.Context) error {
69-
dc := c.(*utils.DatabaseContext)
98+
dc := c.(*utils.RequestContext)
7099
m := &models.Motorcycle{}
71100

72101
if err := c.Bind(m); err != nil {
@@ -80,7 +109,7 @@ func PostMotorcycles(c echo.Context) error {
80109

81110

82111
func DeleteMotorcycle(c echo.Context) error {
83-
dc := c.(*utils.DatabaseContext)
112+
dc := c.(*utils.RequestContext)
84113

85114
var motorcycle models.Motorcycle
86115

handlers/search.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import (
1212

1313
/* GET /search/:query */
1414
func GetSearch(c echo.Context) error {
15-
dc := c.(*utils.DatabaseContext)
15+
dc := c.(*utils.RequestContext)
1616

1717
var motorcycles []models.MotorcycleModel
1818

@@ -28,7 +28,7 @@ func GetSearch(c echo.Context) error {
2828

2929
/* GET /search-algolia/:text */
3030
func GetSearchAlgolia(c echo.Context) error {
31-
ac := c.(*utils.AlgoliaContext)
31+
ac := c.(*utils.RequestContext)
3232

3333
text := c.Param("text")
3434

models/motorcycle.go

Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -12,53 +12,53 @@ import (
1212
type Motorcycle struct {
1313
ID uuid.UUID `gorm:"primary_key;type:uuid;default:uuid_generate_v4()" json:"id" string:"id" form:"id" query:"id"`
1414

15-
Year string `json:"year,omitempty" string:"year" form:"year" query:"year"`
16-
Category string `json:"category,omitempty" string:"category" form:"category" query:"category"`
17-
Cc string `json:"cc,omitempty" string:"cc" form:"cc" query:"cc"`
18-
EngineType string `json:"engineType,omitempty" string:"engineType" form:"engineType" query:"engineType"`
19-
Power string `json:"power,omitempty" string:"power" form:"power" query:"power"`
20-
Torque string `json:"torque,omitempty" string:"torque" form:"torque" query:"torque"`
21-
Compression string `json:"compression,omitempty" string:"compression" form:"compression" query:"compression"`
22-
Bore string `json:"bore,omitempty" string:"bore" form:"bore" query:"bore"`
23-
Stroke string `json:"stroke,omitempty" string:"stroke" form:"stroke" query:"stroke"`
24-
FuelSystem string `json:"fuelSystem,omitempty" string:"fuelSystem" form:"fuelSystem" query:"fuelSystem"`
25-
FuelControl string `json:"fuelControl,omitempty" string:"fuelControl" form:"fuelControl" query:"fuelControl"`
26-
Ignition string `json:"ignition,omitempty" string:"ignition" form:"ignition" query:"ignition"`
27-
Lubrication string `json:"lubrication,omitempty" string:"lubrication" form:"lubrication" query:"lubrication"`
28-
Cooling string `json:"cooling,omitempty" string:"cooling" form:"cooling" query:"cooling"`
29-
Gearbox string `json:"gearbox,omitempty" string:"gearbox" form:"gearbox" query:"gearbox"`
30-
Transmission string `json:"transmission,omitempty" string:"transmission" form:"transmission" query:"transmission"`
31-
Clutch string `json:"clutch,omitempty" string:"clutch" form:"clutch" query:"clutch"`
32-
FrameType string `json:"frameType,omitempty" string:"frameType" form:"frameType" query:"frameType"`
33-
FrontSuspension string `json:"frontSuspension,omitempty" string:"frontSuspension" form:"frontSuspension" query:"frontSuspension"`
34-
FrontWheelTravel string `json:"frontWheelTravel,omitempty" string:"frontWheelTravel" form:"frontWheelTravel" query:"frontWheelTravel"`
35-
RearSuspension string `json:"fearSuspension,omitempty" string:"fearSuspension" form:"fearSuspension" query:"fearSuspension"`
36-
RearWheelTravel string `json:"fearWheelTravel,omitempty" string:"fearWheelTravel" form:"fearWheelTravel" query:"fearWheelTravel"`
37-
FrontTyre string `json:"frontTyre,omitempty" string:"frontTyre" form:"frontTyre" query:"frontTyre"`
38-
RearTyre string `json:"rearTyre,omitempty" string:"rearTyre" form:"rearTyre" query:"rearTyre"`
39-
FrontBrakes string `json:"frontBrakes,omitempty" string:"frontBrakes" form:"frontBrakes" query:"frontBrakes"`
40-
FrontBrakesDiameter string `json:"frontBrakesDiameter,omitempty" string:"frontBrakesDiameter" form:"frontBrakesDiameter" query:"frontBrakesDiameter"`
41-
RearBrakes string `json:"rearBrakes,omitempty" string:"rearBrakes" form:"rearBrakes" query:"rearBrakes"`
42-
RearBrakesDiameter string `json:"rearBrakesDiameter,omitempty" string:"rearBrakesDiameter" form:"rearBrakesDiameter" query:"rearBrakesDiameter"`
43-
DryWeight string `json:"dryWeight,omitempty" string:"dryWeight" form:"dryWeight" query:"dryWeight"`
44-
PowerWeight string `json:"powerWeight,omitempty" string:"powerWeight" form:"powerWeight" query:"powerWeight"`
45-
SeatHeight string `json:"seatHeight,omitempty" string:"seatHeight" form:"seatHeight" query:"seatHeight"`
46-
OverallHeight string `json:"overallHeight,omitempty" string:"overallHeight" form:"overallHeight" query:"overallHeight"`
47-
OverallLength string `json:"overallLength,omitempty" string:"overallLength" form:"overallLength" query:"overallLength"`
48-
OverallWidth string `json:"overallWidth,omitempty" string:"overallWidth" form:"overallWidth" query:"overallWidth"`
49-
GroundClearence string `json:"groundClearence,omitempty" string:"groundClearence" form:"groundClearence" query:"groundClearence"`
50-
Wheelbase string `json:"wheelbase,omitempty" string:"wheelbase" form:"wheelbase" query:"wheelbase"`
51-
FuelCapacity string `json:"fuelCapacity,omitempty" string:"fuelCapacity" form:"fuelCapacity" query:"fuelCapacity"`
52-
Starter string `json:"starter,omitempty" string:"starter" form:"starter" query:"starter"`
15+
Year string `json:"year" string:"year" form:"year" query:"year"`
16+
Category string `json:"category" string:"category" form:"category" query:"category"`
17+
Cc string `json:"cc" string:"cc" form:"cc" query:"cc"`
18+
EngineType string `json:"engineType" string:"engineType" form:"engineType" query:"engineType"`
19+
Power string `json:"power" string:"power" form:"power" query:"power"`
20+
Torque string `json:"torque" string:"torque" form:"torque" query:"torque"`
21+
Compression string `json:"compression" string:"compression" form:"compression" query:"compression"`
22+
Bore string `json:"bore" string:"bore" form:"bore" query:"bore"`
23+
Stroke string `json:"stroke" string:"stroke" form:"stroke" query:"stroke"`
24+
FuelSystem string `json:"fuelSystem" string:"fuelSystem" form:"fuelSystem" query:"fuelSystem"`
25+
FuelControl string `json:"fuelControl" string:"fuelControl" form:"fuelControl" query:"fuelControl"`
26+
Ignition string `json:"ignition" string:"ignition" form:"ignition" query:"ignition"`
27+
Lubrication string `json:"lubrication" string:"lubrication" form:"lubrication" query:"lubrication"`
28+
Cooling string `json:"cooling" string:"cooling" form:"cooling" query:"cooling"`
29+
Gearbox string `json:"gearbox" string:"gearbox" form:"gearbox" query:"gearbox"`
30+
Transmission string `json:"transmission" string:"transmission" form:"transmission" query:"transmission"`
31+
Clutch string `json:"clutch" string:"clutch" form:"clutch" query:"clutch"`
32+
FrameType string `json:"frameType" string:"frameType" form:"frameType" query:"frameType"`
33+
FrontSuspension string `json:"frontSuspension" string:"frontSuspension" form:"frontSuspension" query:"frontSuspension"`
34+
FrontWheelTravel string `json:"frontWheelTravel" string:"frontWheelTravel" form:"frontWheelTravel" query:"frontWheelTravel"`
35+
RearSuspension string `json:"rearSuspension" string:"rearSuspension" form:"rearSuspension" query:"rearSuspension"`
36+
RearWheelTravel string `json:"rearWheelTravel" string:"rearWheelTravel" form:"rearWheelTravel" query:"rearWheelTravel"`
37+
FrontTyre string `json:"frontTyre" string:"frontTyre" form:"frontTyre" query:"frontTyre"`
38+
RearTyre string `json:"rearTyre" string:"rearTyre" form:"rearTyre" query:"rearTyre"`
39+
FrontBrakes string `json:"frontBrakes" string:"frontBrakes" form:"frontBrakes" query:"frontBrakes"`
40+
FrontBrakesDiameter string `json:"frontBrakesDiameter" string:"frontBrakesDiameter" form:"frontBrakesDiameter" query:"frontBrakesDiameter"`
41+
RearBrakes string `json:"rearBrakes" string:"rearBrakes" form:"rearBrakes" query:"rearBrakes"`
42+
RearBrakesDiameter string `json:"rearBrakesDiameter" string:"rearBrakesDiameter" form:"rearBrakesDiameter" query:"rearBrakesDiameter"`
43+
DryWeight string `json:"dryWeight" string:"dryWeight" form:"dryWeight" query:"dryWeight"`
44+
PowerWeight string `json:"powerWeight" string:"powerWeight" form:"powerWeight" query:"powerWeight"`
45+
SeatHeight string `json:"seatHeight" string:"seatHeight" form:"seatHeight" query:"seatHeight"`
46+
OverallHeight string `json:"overallHeight" string:"overallHeight" form:"overallHeight" query:"overallHeight"`
47+
OverallLength string `json:"overallLength" string:"overallLength" form:"overallLength" query:"overallLength"`
48+
OverallWidth string `json:"overallWidth" string:"overallWidth" form:"overallWidth" query:"overallWidth"`
49+
GroundClearence string `json:"groundClearence" string:"groundClearence" form:"groundClearence" query:"groundClearence"`
50+
Wheelbase string `json:"wheelbase" string:"wheelbase" form:"wheelbase" query:"wheelbase"`
51+
FuelCapacity string `json:"fuelCapacity" string:"fuelCapacity" form:"fuelCapacity" query:"fuelCapacity"`
52+
Starter string `json:"starter" string:"starter" form:"starter" query:"starter"`
5353

5454
MotorcycleModelId uuid.UUID `gorm:"foreign_key;type:uuid()" json:"motorcycles_models_id" string:"motorcycles_models_id" form:"motorcycles_models_id" query:"motorcycles_models_id"`
5555

5656

57-
CreatedAt time.Time `json:"createdAt,omitempty" string:"createdAt" form:"createdAt" query:"createdAt"`
58-
UpdatedAt time.Time `json:"updatedAt,omitempty" string:"updatedAt" form:"updatedAt" query:"updatedAt"`
57+
CreatedAt time.Time `json:"createdAt" string:"createdAt" form:"createdAt" query:"createdAt"`
58+
UpdatedAt time.Time `json:"updatedAt" string:"updatedAt" form:"updatedAt" query:"updatedAt"`
5959
DeletedAt time.Time `gorm:"default:null" json:"deletedAt" string:"deletedAt" form:"deletedAt" query:"deletedAt"`
6060

61-
Price uint `json:"price,omitempty" string:"price" form:"price" query:"price"`
61+
Price uint `json:"price" string:"price" form:"price" query:"price"`
6262
}
6363

6464
func (m Motorcycle) TableName() string {

models/motorcycle_models.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ type MotorcycleModel struct {
1616
Model string `json:"model,omitempty" string:"model" form:"model" query:"model"`
1717
Category string `json:"category,omitempty" string:"category" form:"category" query:"category"`
1818

19+
Slug string `json:"slug,omitempty" string:"category" form:"slug" query:"slug"`
20+
1921
CreatedAt time.Time `json:"createdAt,omitempty" string:"createdAt" form:"createdAt" query:"createdAt"`
2022
UpdatedAt time.Time `json:"updatedAt,omitempty" string:"updatedAt" form:"updatedAt" query:"updatedAt"`
2123
DeletedAt time.Time `gorm:"default:null" json:"deletedAt" string:"deletedAt" form:"deletedAt" query:"deletedAt"`

scripts/dump_for_algolia.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
echo "id,brand,model,category" > lowside-io-algolia.csv
2-
docker exec -i core_database_1 su postgres -c 'psql --dbname=lowside-dev -P format=unaligned -P tuples_only -P fieldsep=\, -c "SELECT id, brand, model, category FROM public.\"motorcycles_models\""' >> lowside-io-algolia.csv
1+
echo "id,slug,brand,model,category" > lowside-io-algolia.csv
2+
docker exec -i core_database_1 su postgres -c 'psql --dbname=lowside-dev -P format=unaligned -P tuples_only -P fieldsep=\, -c "SELECT id, slug, brand, model, category FROM public.\"motorcycles_models\""' >> lowside-io-algolia.csv

server.go

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,7 @@ func main() {
3434

3535
e.Use(func(h echo.HandlerFunc) echo.HandlerFunc {
3636
return func(c echo.Context) error {
37-
cc := &utils.DatabaseContext{c}
38-
return h(cc)
39-
}
40-
})
41-
42-
e.Use(func(h echo.HandlerFunc) echo.HandlerFunc {
43-
return func(c echo.Context) error {
44-
cc := &utils.AlgoliaContext{c}
37+
cc := &utils.RequestContext{c}
4538
return h(cc)
4639
}
4740
})
@@ -50,6 +43,9 @@ func main() {
5043
return c.String(http.StatusOK, "Hello, World!")
5144
})
5245

46+
e.GET("/motorcycles/slug/:slug", handlers.GetMotorcycleByslug)
47+
e.GET("/motorcycles-specs/:id", handlers.GetMotorcycleSpecsByModelId)
48+
5349
e.GET("/motorcycles/:id", handlers.GetMotorcycle)
5450
e.PUT("/motorcycles/:id", handlers.PutMotorcycle)
5551
e.DELETE("/motorcycles/:id", handlers.DeleteMotorcycle)

utils/search.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package utils
33
import (
44
"os"
55

6-
"github.com/labstack/echo"
76
"github.com/algolia/algoliasearch-client-go/algoliasearch"
87
)
98

@@ -16,9 +15,6 @@ func InitSearch() {
1615
}
1716

1817

19-
type AlgoliaContext struct {
20-
echo.Context
21-
}
22-
func (c *AlgoliaContext) AlgoliaIndex() algoliasearch.Index {
18+
func (c *RequestContext) AlgoliaIndex() algoliasearch.Index {
2319
return index
2420
}

utils/utils.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010

1111
var db *gorm.DB
1212

13-
type DatabaseContext struct {
13+
type RequestContext struct {
1414
echo.Context
1515
}
1616

@@ -40,6 +40,6 @@ func Init() {
4040
// defer db.Close()
4141
}
4242

43-
func (c *DatabaseContext) Db() *gorm.DB {
43+
func (c *RequestContext) Db() *gorm.DB {
4444
return db
4545
}

0 commit comments

Comments
 (0)