2 次程式碼提交

共有 14 個文件被更改,包括 165 次插入26 次删除
分割檢視
  1. 二進制
      bridge
  2. +0
    -6
      build/docker-compose.dev.yml
  3. +0
    -6
      build/docker-compose.yaml
  4. 二進制
      decoder
  5. +27
    -1
      internal/pkg/controller/alerts_controller.go
  6. +26
    -4
      internal/pkg/controller/floor_controller.go
  7. +27
    -1
      internal/pkg/controller/gateways_controller.go
  8. +26
    -1
      internal/pkg/controller/trackers_controller.go
  9. +27
    -1
      internal/pkg/controller/trackerzones_controller.go
  10. +27
    -1
      internal/pkg/controller/zone_controller.go
  11. +3
    -3
      internal/pkg/model/tracks.go
  12. +2
    -2
      internal/pkg/service/alert_service.go
  13. 二進制
      location
  14. 二進制
      server

二進制
bridge 查看文件


+ 0
- 6
build/docker-compose.dev.yml 查看文件

@@ -54,12 +54,6 @@ services:
- ./init-scripts/create_topic.sh:/tmp/create_topic.sh
env_file:
- ./env/kafka-init.env
valkey:
image: valkey/valkey:9.0.0
container_name: valkey
ports:
- "127.0.0.1:6379:6379"

presense-decoder:
build:


+ 0
- 6
build/docker-compose.yaml 查看文件

@@ -52,12 +52,6 @@ services:
- ./init-scripts/create_topic.sh:/tmp/create_topic.sh
env_file:
- ./env/kafka-init.env
valkey:
image: valkey/valkey:9.0.0
container_name: valkey
ports:
- "127.0.0.1:6379:6379"

presense-decoder:
image: afasystemadmin/ble-ai-localizer:decoder_v1


二進制
decoder 查看文件


+ 27
- 1
internal/pkg/controller/alerts_controller.go 查看文件

@@ -4,7 +4,9 @@ import (
"context"
"encoding/json"
"errors"
"log/slog"
"net/http"
"strconv"

"github.com/AFASystems/presence/internal/pkg/api/response"
"github.com/AFASystems/presence/internal/pkg/service"
@@ -15,7 +17,31 @@ import (

func AlertsListController(db *gorm.DB, ctx context.Context) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
alerts, err := service.GetAllAlerts(db, ctx)
query := r.URL.Query()

lStr := query.Get("limit")
if lStr == "" {
lStr = "100"
}
limit, err := strconv.Atoi(lStr)
if err != nil {
slog.Error("invalid limit parameter", "value", lStr)
response.BadRequest(w, "invalid limit parameter")
return
}

oStr := query.Get("offset")
if oStr == "" {
oStr = "0"
}
offset, err := strconv.Atoi(oStr)
if err != nil {
slog.Error("invalid offset parameter", "value", oStr)
response.BadRequest(w, "invalid offset parameter")
return
}

alerts, err := service.GetAllAlerts(db, ctx, limit, offset)
if err != nil {
response.InternalError(w, "failed to list alerts", err)
return


+ 26
- 4
internal/pkg/controller/floor_controller.go 查看文件

@@ -3,7 +3,9 @@ package controller
import (
"context"
"encoding/json"
"log/slog"
"net/http"
"strconv"

"github.com/AFASystems/presence/internal/pkg/api/response"
"github.com/AFASystems/presence/internal/pkg/model"
@@ -34,12 +36,32 @@ func FloorAddController(db *gorm.DB, context context.Context) http.HandlerFunc {

func FloorListController(db *gorm.DB, context context.Context) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var floors []model.Floor
if err := db.WithContext(context).Find(&floors).Error; err != nil {
response.InternalError(w, "failed to list floors", err)
query := r.URL.Query()

lStr := query.Get("limit")
if lStr == "" {
lStr = "100"
}
limit, err := strconv.Atoi(lStr)
if err != nil {
slog.Error("invalid limit parameter", "value", lStr)
response.BadRequest(w, "invalid limit parameter")
return
}

oStr := query.Get("offset")
if oStr == "" {
oStr = "0"
}
offset, err := strconv.Atoi(oStr)
if err != nil {
slog.Error("invalid offset parameter", "value", oStr)
response.BadRequest(w, "invalid offset parameter")
return
}
if err := db.WithContext(context).Find(&floors).Error; err != nil {

var floors []model.Floor
if err := db.WithContext(context).Limit(limit).Offset(offset).Find(&floors).Error; err != nil {
response.InternalError(w, "failed to list floors", err)
return
}


+ 27
- 1
internal/pkg/controller/gateways_controller.go 查看文件

@@ -3,7 +3,9 @@ package controller
import (
"context"
"encoding/json"
"log/slog"
"net/http"
"strconv"

"github.com/AFASystems/presence/internal/pkg/api/response"
"github.com/AFASystems/presence/internal/pkg/model"
@@ -35,8 +37,32 @@ func GatewayAddController(db *gorm.DB, context context.Context) http.HandlerFunc

func GatewayListController(db *gorm.DB, context context.Context) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
query := r.URL.Query()

lStr := query.Get("limit")
if lStr == "" {
lStr = "100"
}
limit, err := strconv.Atoi(lStr)
if err != nil {
slog.Error("invalid limit parameter", "value", lStr)
response.BadRequest(w, "invalid limit parameter")
return
}

oStr := query.Get("offset")
if oStr == "" {
oStr = "0"
}
offset, err := strconv.Atoi(oStr)
if err != nil {
slog.Error("invalid offset parameter", "value", oStr)
response.BadRequest(w, "invalid offset parameter")
return
}

var gateways []model.Gateway
if err := db.WithContext(context).Find(&gateways).Error; err != nil {
if err := db.WithContext(context).Limit(limit).Offset(offset).Find(&gateways).Error; err != nil {
response.InternalError(w, "failed to list gateways", err)
return
}


+ 26
- 1
internal/pkg/controller/trackers_controller.go 查看文件

@@ -5,6 +5,7 @@ import (
"encoding/json"
"log/slog"
"net/http"
"strconv"

"github.com/AFASystems/presence/internal/pkg/api/response"
"github.com/AFASystems/presence/internal/pkg/kafkaclient"
@@ -67,8 +68,32 @@ func TrackerAdd(db *gorm.DB, writer *kafka.Writer, context context.Context) http

func TrackerList(db *gorm.DB, context context.Context) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
query := r.URL.Query()

lStr := query.Get("limit")
if lStr == "" {
lStr = "100"
}
limit, err := strconv.Atoi(lStr)
if err != nil {
slog.Error("invalid limit parameter", "value", lStr)
response.BadRequest(w, "invalid limit parameter")
return
}

oStr := query.Get("offset")
if oStr == "" {
oStr = "0"
}
offset, err := strconv.Atoi(oStr)
if err != nil {
slog.Error("invalid offset parameter", "value", oStr)
response.BadRequest(w, "invalid offset parameter")
return
}

var list []model.Tracker
if err := db.WithContext(context).Find(&list).Error; err != nil {
if err := db.WithContext(context).Limit(limit).Offset(offset).Find(&list).Error; err != nil {
response.InternalError(w, "failed to list trackers", err)
return
}


+ 27
- 1
internal/pkg/controller/trackerzones_controller.go 查看文件

@@ -3,7 +3,9 @@ package controller
import (
"context"
"encoding/json"
"log/slog"
"net/http"
"strconv"

"github.com/AFASystems/presence/internal/pkg/api/response"
"github.com/AFASystems/presence/internal/pkg/model"
@@ -34,8 +36,32 @@ func TrackerZoneAddController(db *gorm.DB, context context.Context) http.Handler

func TrackerZoneListController(db *gorm.DB, context context.Context) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
query := r.URL.Query()

lStr := query.Get("limit")
if lStr == "" {
lStr = "100"
}
limit, err := strconv.Atoi(lStr)
if err != nil {
slog.Error("invalid limit parameter", "value", lStr)
response.BadRequest(w, "invalid limit parameter")
return
}

oStr := query.Get("offset")
if oStr == "" {
oStr = "0"
}
offset, err := strconv.Atoi(oStr)
if err != nil {
slog.Error("invalid offset parameter", "value", oStr)
response.BadRequest(w, "invalid offset parameter")
return
}

var list []model.TrackerZones
if err := db.WithContext(context).Find(&list).Error; err != nil {
if err := db.WithContext(context).Limit(limit).Offset(offset).Find(&list).Error; err != nil {
response.InternalError(w, "failed to list tracker zones", err)
return
}


+ 27
- 1
internal/pkg/controller/zone_controller.go 查看文件

@@ -3,7 +3,9 @@ package controller
import (
"context"
"encoding/json"
"log/slog"
"net/http"
"strconv"

"github.com/AFASystems/presence/internal/pkg/api/response"
"github.com/AFASystems/presence/internal/pkg/model"
@@ -34,8 +36,32 @@ func ZoneAddController(db *gorm.DB, context context.Context) http.HandlerFunc {

func ZoneListController(db *gorm.DB, context context.Context) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
query := r.URL.Query()

lStr := query.Get("limit")
if lStr == "" {
lStr = "100"
}
limit, err := strconv.Atoi(lStr)
if err != nil {
slog.Error("invalid limit parameter", "value", lStr)
response.BadRequest(w, "invalid limit parameter")
return
}

oStr := query.Get("offset")
if oStr == "" {
oStr = "0"
}
offset, err := strconv.Atoi(oStr)
if err != nil {
slog.Error("invalid offset parameter", "value", oStr)
response.BadRequest(w, "invalid offset parameter")
return
}

var zones []model.Zone
if err := db.WithContext(context).Find(&zones).Error; err != nil {
if err := db.WithContext(context).Limit(limit).Offset(offset).Find(&zones).Error; err != nil {
response.InternalError(w, "failed to list zones", err)
return
}


+ 3
- 3
internal/pkg/model/tracks.go 查看文件

@@ -4,13 +4,13 @@ import "time"

type Tracks struct {
ID uint `gorm:"unique;primaryKey;autoIncrement"`
UUID string `json:"id" gorm:"foreignKey"`
Timestamp time.Time `json:"timestamp"`
UUID string `json:"id" gorm:"foreignKey;index:idx_tracks_uuid_ts,priority:1"`
Timestamp time.Time `json:"timestamp" gorm:"index:idx_tracks_tracker_ts,priority:2;index:idx_tracks_uuid_ts,priority:2"`
Type string `json:"type"`
Status string `json:"status"`
Gateway string `json:"gateway" gorm:"index"`
GatewayMac string `json:"gatewayMac"`
Tracker string `json:"tracker" gorm:"index"`
Tracker string `json:"tracker" gorm:"index:idx_tracks_tracker_ts,priority:1"`
TrackerMac string `json:"trackerMac"`
Subject string `json:"subject"`
SubjectName string `json:"subjectName"`


+ 2
- 2
internal/pkg/service/alert_service.go 查看文件

@@ -21,9 +21,9 @@ func DeleteAlertByTrackerID(trackerID string, db *gorm.DB, ctx context.Context)
return nil
}

func GetAllAlerts(db *gorm.DB, ctx context.Context) ([]model.Alert, error) {
func GetAllAlerts(db *gorm.DB, ctx context.Context, limit, offset int) ([]model.Alert, error) {
var alerts []model.Alert
if err := db.WithContext(ctx).Find(&alerts).Error; err != nil {
if err := db.WithContext(ctx).Limit(limit).Offset(offset).Find(&alerts).Error; err != nil {
return []model.Alert{}, err
}



二進制
location 查看文件


二進制
server 查看文件


Loading…
取消
儲存