remove the data package

This commit is contained in:
Andre Medeiros 2021-08-14 13:56:03 -04:00
parent c17a39b9eb
commit 282ff6ef3e
6 changed files with 4 additions and 227 deletions

View file

@ -7,9 +7,10 @@ import (
"net/http" "net/http"
"time" "time"
"github.com/christianselig/apollo-backend/internal/domain"
"github.com/gorilla/mux" "github.com/gorilla/mux"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"github.com/christianselig/apollo-backend/internal/domain"
) )
func (a *api) disassociateAccountHandler(w http.ResponseWriter, r *http.Request) { func (a *api) disassociateAccountHandler(w http.ResponseWriter, r *http.Request) {

View file

@ -8,12 +8,13 @@ import (
"strings" "strings"
"time" "time"
"github.com/christianselig/apollo-backend/internal/domain"
"github.com/dustin/go-humanize/english" "github.com/dustin/go-humanize/english"
"github.com/gorilla/mux" "github.com/gorilla/mux"
"github.com/sideshow/apns2" "github.com/sideshow/apns2"
"github.com/sideshow/apns2/payload" "github.com/sideshow/apns2/payload"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"github.com/christianselig/apollo-backend/internal/domain"
) )
const notificationTitle = "📣 Hello, is this thing on?" const notificationTitle = "📣 Hello, is this thing on?"

View file

@ -1,67 +0,0 @@
package data
import (
"context"
"strings"
"github.com/jackc/pgx/v4"
"github.com/jackc/pgx/v4/pgxpool"
)
type Account struct {
ID int64
Username string
AccountID string
AccessToken string
RefreshToken string
ExpiresAt int64
LastMessageID string
LastCheckedAt float64
}
func (a *Account) NormalizedUsername() string {
return strings.ToLower(a.Username)
}
type AccountModel struct {
ctx context.Context
pool *pgxpool.Pool
}
func (am *AccountModel) Upsert(a *Account) error {
return am.pool.BeginFunc(am.ctx, func(tx pgx.Tx) error {
stmt := `
INSERT INTO accounts (username, account_id, access_token, refresh_token, expires_at, last_message_id, device_count, last_checked_at)
VALUES ($1, $2, $3, $4, $5, '', 0, 0)
ON CONFLICT(username)
DO
UPDATE SET
access_token = $3,
refresh_token = $4,
expires_at = $5
RETURNING id`
return tx.QueryRow(
am.ctx,
stmt,
a.NormalizedUsername(),
a.AccountID,
a.AccessToken,
a.RefreshToken,
a.ExpiresAt,
).Scan(&a.ID)
})
}
func (am *AccountModel) Delete(id int64) error {
return nil
}
type MockAccountModel struct{}
func (mam *MockAccountModel) Upsert(a *Account) error {
return nil
}
func (mam *MockAccountModel) Delete(id int64) error {
return nil
}

View file

@ -1,45 +0,0 @@
package data
import (
"context"
"github.com/jackc/pgx/v4/pgxpool"
)
type DeviceAccount struct {
ID int64
AccountID int64
DeviceID int64
}
type DeviceAccountModel struct {
ctx context.Context
pool *pgxpool.Pool
}
func (dam *DeviceAccountModel) Associate(accountID int64, deviceID int64) error {
stmt := `
INSERT INTO devices_accounts (account_id, device_id)
VALUES ($1, $2)
ON CONFLICT (account_id, device_id) DO NOTHING
RETURNING id`
if _, err := dam.pool.Exec(dam.ctx, stmt, accountID, deviceID); err != nil {
return err
}
// Update account counter
stmt = `
UPDATE accounts
SET device_count = (
SELECT COUNT(*) FROM devices_accounts WHERE account_id = $1
)
WHERE id = $1`
_, err := dam.pool.Exec(dam.ctx, stmt, accountID)
return err
}
type MockDeviceAccountModel struct{}
func (mdam *MockDeviceAccountModel) Associate(accountID int64, deviceID int64) error {
return nil
}

View file

@ -1,69 +0,0 @@
package data
import (
"context"
"time"
"github.com/jackc/pgx/v4"
"github.com/jackc/pgx/v4/pgxpool"
)
type Device struct {
ID int64
APNSToken string
Sandbox bool
LastPingedAt int64
}
type DeviceModel struct {
ctx context.Context
pool *pgxpool.Pool
}
func (dm *DeviceModel) Upsert(d *Device) error {
d.LastPingedAt = time.Now().Unix()
return dm.pool.BeginFunc(dm.ctx, func(tx pgx.Tx) error {
stmt := `
INSERT INTO devices (apns_token, sandbox, last_pinged_at)
VALUES ($1, $2, $3)
ON CONFLICT(apns_token)
DO
UPDATE SET last_pinged_at = $3
RETURNING id`
return tx.QueryRow(
dm.ctx,
stmt,
d.APNSToken,
d.Sandbox,
d.LastPingedAt,
).Scan(&d.ID)
})
}
func (dm *DeviceModel) GetByAPNSToken(token string) (*Device, error) {
device := &Device{}
stmt := `
SELECT id, apns_token, sandbox, last_pinged_at
FROM devices
WHERE apns_token = $1`
if err := dm.pool.QueryRow(dm.ctx, stmt, token).Scan(
&device.ID,
&device.APNSToken,
&device.Sandbox,
&device.LastPingedAt,
); err != nil {
return nil, err
}
return device, nil
}
type MockDeviceModel struct{}
func (mdm *MockDeviceModel) Upsert(d *Device) error {
return nil
}
func (mdm *MockDeviceModel) GetByAPNSToken(token string) (*Device, error) {
return nil, nil
}

View file

@ -1,44 +0,0 @@
package data
import (
"context"
"errors"
"github.com/jackc/pgx/v4/pgxpool"
)
var (
ErrRecordNotFound = errors.New("record not found")
)
type Models struct {
Accounts interface {
Upsert(a *Account) error
Delete(id int64) error
}
Devices interface {
Upsert(*Device) error
GetByAPNSToken(string) (*Device, error)
}
DevicesAccounts interface {
Associate(int64, int64) error
}
}
func NewModels(ctx context.Context, pool *pgxpool.Pool) *Models {
return &Models{
Accounts: &AccountModel{ctx, pool},
Devices: &DeviceModel{ctx, pool},
DevicesAccounts: &DeviceAccountModel{ctx, pool},
}
}
func NewMockModels() *Models {
return &Models{
Accounts: &MockAccountModel{},
Devices: &MockDeviceModel{},
DevicesAccounts: &MockDeviceAccountModel{},
}
}