Skip to content

Commit

Permalink
feat: initial implementation of Create() in MetricsDAO
Browse files Browse the repository at this point in the history
  • Loading branch information
Dara Hayes committed Feb 20, 2018
1 parent 96cb9c1 commit c045758
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 5 deletions.
13 changes: 10 additions & 3 deletions pkg/dao/dao.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package dao

import (
"database/sql"
"errors"
"encoding/json"

"github.com/aerogear/aerogear-metrics-api/pkg/mobile"
)
Expand All @@ -12,8 +12,15 @@ type MetricsDAO struct {
}

// Create a metrics record
func (m *MetricsDAO) Create(metric mobile.Metric) (mobile.Metric, error) {
return metric, errors.New("Not Implemented yet")
func (m *MetricsDAO) Create(metric mobile.Metric) error {
data, err := json.Marshal(metric.Data)

if err != nil {
return err
}

_, err = db.Exec("INSERT INTO mobileappmetrics(clientId, data) VALUES($1, $2)", metric.ClientId, data)
return err
}

// Ping checks that we are connected to the database
Expand Down
3 changes: 3 additions & 0 deletions pkg/dao/db.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,9 @@ func DoInitialSetup() error {
if db == nil {
return errors.New("cannot setup database, must call Connect() first")
}
if _, err := db.Exec("CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;"); err != nil {
return err
}
if _, err := db.Exec("CREATE TABLE IF NOT EXISTS mobileappmetrics(clientId varchar(30) NOT NULL, event_time timestamptz NOT NULL DEFAULT now() Not NULL, data jsonb)"); err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/mobile/interfaces.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ package mobile

// MetricCreator defines how a metric can be created
type MetricCreator interface {
Create(m Metric) (Metric, error)
Create(m Metric) error
}
2 changes: 1 addition & 1 deletion pkg/mobile/metrics.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@ func NewMetricsService(dao MetricCreator) *MetricsService {
}

func (m MetricsService) Create(metric Metric) (Metric, error) {
return metric, nil
return metric, m.mdao.Create(metric)
}

0 comments on commit c045758

Please sign in to comment.