From c7906e85980c45fd3f37d11b80e14a1075d94d4f Mon Sep 17 00:00:00 2001 From: mhsanaei Date: Tue, 23 Jul 2024 11:28:28 +0200 Subject: API - Get client's traffic By ID Co-Authored-By: Hassan Ali Gilani --- web/service/inbound.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'web/service') diff --git a/web/service/inbound.go b/web/service/inbound.go index 6f9aac98..25a43f47 100644 --- a/web/service/inbound.go +++ b/web/service/inbound.go @@ -1750,6 +1750,25 @@ func (s *InboundService) GetClientTrafficByEmail(email string) (traffic *xray.Cl return nil, nil } +func (s *InboundService) GetClientTrafficByID(id string) ([]xray.ClientTraffic, error) { + db := database.GetDB() + var traffics []xray.ClientTraffic + + err := db.Model(xray.ClientTraffic{}).Where(`email IN( + SELECT JSON_EXTRACT(client.value, '$.email') as email + FROM inbounds, + JSON_EACH(JSON_EXTRACT(inbounds.settings, '$.clients')) AS client + WHERE + JSON_EXTRACT(client.value, '$.id') in (?) + )`, id).Find(&traffics).Error + + if err != nil { + logger.Debug(err) + return nil, err + } + return traffics, err +} + func (s *InboundService) SearchClientTraffic(query string) (traffic *xray.ClientTraffic, err error) { db := database.GetDB() inbound := &model.Inbound{} -- cgit v1.2.3