Commit 11d0ae93 authored by yangjian's avatar yangjian

Update SdmSubscriptions: add IndividualSdmSubscription and database

parent 85d44561
/**
* Nudr_DataRepository API OpenAPI file
* Unified Data Repository Service. © 2020, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
* Unified Data Repository Service. © 2020, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 2.1.2
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
......@@ -12,7 +12,7 @@
/*
* SDMSubscriptionDocumentApi.h
*
*
*
*/
#ifndef SDMSubscriptionDocumentApi_H_
......@@ -63,7 +63,7 @@ private:
/// Modify an individual sdm subscription
/// </summary>
/// <remarks>
///
///
/// </remarks>
/// <param name="ueId">UE id</param>
/// <param name="subsId"></param>
......@@ -75,7 +75,7 @@ private:
/// Retrieves a individual sdmSubscription identified by subsId
/// </summary>
/// <remarks>
///
///
/// </remarks>
/// <param name="ueId"></param>
/// <param name="subsId">Unique ID of the subscription to retrieve</param>
......@@ -85,7 +85,7 @@ private:
/// Deletes a sdmsubscriptions
/// </summary>
/// <remarks>
///
///
/// </remarks>
/// <param name="ueId"></param>
/// <param name="subsId">Unique ID of the subscription to remove</param>
......@@ -95,12 +95,12 @@ private:
/// Update an individual sdm subscriptions of a UE
/// </summary>
/// <remarks>
///
///
/// </remarks>
/// <param name="ueId"></param>
/// <param name="subsId"></param>
/// <param name="sdmSubscription"> (optional)</param>
virtual void updatesdmsubscriptions(const std::string &ueId, const std::string &subsId, const SdmSubscription &sdmSubscription, Pistache::Http::ResponseWriter &response) = 0;
virtual void updatesdmsubscriptions(const std::string &ueId, const std::string &subsId, SdmSubscription &sdmSubscription, Pistache::Http::ResponseWriter &response) = 0;
};
......
/**
* Nudr_DataRepository API OpenAPI file
* Unified Data Repository Service. © 2020, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
* Unified Data Repository Service. © 2020, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 2.1.2
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
......@@ -19,21 +19,231 @@ namespace api {
using namespace org::openapitools::server::model;
SDMSubscriptionDocumentApiImpl::SDMSubscriptionDocumentApiImpl(std::shared_ptr<Pistache::Rest::Router> rtr)
SDMSubscriptionDocumentApiImpl::SDMSubscriptionDocumentApiImpl(std::shared_ptr<Pistache::Rest::Router> rtr, MYSQL *mysql)
: SDMSubscriptionDocumentApi(rtr)
{ }
{
mysql_WitcommUDRDB = mysql;
}
void SDMSubscriptionDocumentApiImpl::modifysdm_subscription(const std::string &ueId, const std::string &subsId, const std::vector<PatchItem> &patchItem, const Pistache::Optional<std::string> &supportedFeatures, Pistache::Http::ResponseWriter &response) {
response.send(Pistache::Http::Code::Ok, "Do some magic\n");
}
void SDMSubscriptionDocumentApiImpl::querysdm_subscription(const std::string &ueId, const std::string &subsId, Pistache::Http::ResponseWriter &response) {
response.send(Pistache::Http::Code::Ok, "Do some magic\n");
MYSQL_RES *res = NULL;
MYSQL_ROW row;
MYSQL_FIELD* field = nullptr;
nlohmann::json j;
SdmSubscription SdmSubscriptions;
const std::string query = "SELECT * from SdmSubscriptions WHERE ueid="+ueId+" AND subsId="+subsId;
if (mysql_real_query(mysql_WitcommUDRDB,query.c_str(), (unsigned long)query.size()))
{
std::cout << "mysql_real_query failure!" << std::endl;
return;
}
res = mysql_store_result(mysql_WitcommUDRDB);
if(res == NULL)
{
std::cout << "mysql_store_result failure!" << std::endl;
return;
}
row = mysql_fetch_row(res);
if(row != NULL)
{
for (int i = 0; field = mysql_fetch_field(res); i++)
{
if(!strcmp("nfInstanceId", field->name))
{
SdmSubscriptions.setNfInstanceId(row[i]);
}
else if(!strcmp("implicitUnsubscribe", field->name) && row[i] != NULL)
{
if(strcmp(row[i], "0"))
SdmSubscriptions.setImplicitUnsubscribe(true);
else
SdmSubscriptions.setImplicitUnsubscribe(false);
}
else if(!strcmp("expires", field->name) && row[i] != NULL)
{
SdmSubscriptions.setExpires(row[i]);
}
else if(!strcmp("callbackReference", field->name))
{
SdmSubscriptions.setCallbackReference(row[i]);
}
else if(!strcmp("amfServiceName", field->name) && row[i] != NULL)
{
// SdmSubscriptions.setAmfServiceName(row[i]);
}
else if(!strcmp("monitoredResourceUris", field->name))
{
// SdmSubscriptions.setMonitoredResourceUris(row[i]);
}
else if(!strcmp("singleNssai", field->name) && row[i] != NULL)
{
// SdmSubscriptions.setSingleNssai(row[i]);
}
else if(!strcmp("dnn", field->name) && row[i] != NULL)
{
SdmSubscriptions.setDnn(row[i]);
}
else if(!strcmp("subscriptionId", field->name) && row[i] != NULL)
{
SdmSubscriptions.setSubscriptionId(row[i]);
}
else if(!strcmp("plmnId", field->name) && row[i] != NULL)
{
// SdmSubscriptions.setPlmnId(row[i]);
}
else if(!strcmp("immediateReport", field->name) && row[i] != NULL)
{
if(strcmp(row[i], "0"))
SdmSubscriptions.setImmediateReport(true);
else
SdmSubscriptions.setImmediateReport(false);
}
else if(!strcmp("report", field->name) && row[i] != NULL)
{
// SdmSubscriptions.setReport(row[i]);
}
else if(!strcmp("supportedFeatures", field->name) && row[i] != NULL)
{
SdmSubscriptions.setSupportedFeatures(row[i]);
}
else if(!strcmp("contextInfo", field->name) && row[i] != NULL)
{
// SdmSubscriptions.setContextInfo(a);
}
}
to_json(j,SdmSubscriptions);
response.send(Pistache::Http::Code::Ok, j.dump());
}
else
{
std::cout << "SdmSubscription no data!" << std::endl;
}
mysql_free_result(res);
}
void SDMSubscriptionDocumentApiImpl::removesdm_subscriptions(const std::string &ueId, const std::string &subsId, Pistache::Http::ResponseWriter &response) {
response.send(Pistache::Http::Code::Ok, "Do some magic\n");
MYSQL_RES *res = NULL;
nlohmann::json j;
ProblemDetails problemdetails;
const std::string select_query = "SELECT * from SdmSubscriptions WHERE ueid="+ueId+" AND subsId="+subsId;
const std::string query = "DELETE from SdmSubscriptions WHERE ueid="+ueId+" AND subsId="+subsId;
if (mysql_real_query(mysql_WitcommUDRDB,select_query.c_str(), (unsigned long)select_query.size()))
{
problemdetails.setCause("USER_NOT_FOUND");
to_json(j, problemdetails);
std::cout << "mysql_real_query failure!" << std::endl;
response.send(Pistache::Http::Code::Not_Found, j.dump());
return;
}
res = mysql_store_result(mysql_WitcommUDRDB);
if(res == NULL)
{
problemdetails.setCause("USER_NOT_FOUND");
to_json(j, problemdetails);
std::cout << "mysql_store_result failure!" << std::endl;
response.send(Pistache::Http::Code::Not_Found, j.dump());
return;
}
if (!mysql_num_rows(res))
{
problemdetails.setCause("DATA_NOT_FOUND");
to_json(j, problemdetails);
response.send(Pistache::Http::Code::Not_Found, j.dump());
return;
}
mysql_free_result(res);
if (mysql_real_query(mysql_WitcommUDRDB,query.c_str(), (unsigned long)query.size()))
{
problemdetails.setCause("USER_NOT_FOUND");
to_json(j, problemdetails);
std::cout << "mysql_real_query failure!" << std::endl;
response.send(Pistache::Http::Code::Not_Found, j.dump());
return;
}
response.send(Pistache::Http::Code::No_Content, "");
}
void SDMSubscriptionDocumentApiImpl::updatesdmsubscriptions(const std::string &ueId, const std::string &subsId, const SdmSubscription &sdmSubscription, Pistache::Http::ResponseWriter &response) {
response.send(Pistache::Http::Code::Ok, "Do some magic\n");
void SDMSubscriptionDocumentApiImpl::updatesdmsubscriptions(const std::string &ueId, const std::string &subsId, SdmSubscription &sdmSubscription, Pistache::Http::ResponseWriter &response) {
MYSQL_RES *res = NULL;
MYSQL_ROW row;
const std::string select_query = "SELECT * from SdmSubscriptions WHERE ueid="+ueId+" AND subsId="+subsId;
std::string query;
nlohmann::json j;
ProblemDetails problemdetails;
if (mysql_real_query(mysql_WitcommUDRDB,select_query.c_str(), (unsigned long)select_query.size()))
{
std::cout << "mysql_real_query failure!" << std::endl;
return;
}
res = mysql_store_result(mysql_WitcommUDRDB);
if(res == NULL)
{
std::cout << "mysql_store_result failure!" << std::endl;
return;
}
if (mysql_num_rows(res))
{
nlohmann::json MonitoredResourceUris_json(sdmSubscription.getMonitoredResourceUris());
query="update SdmSubscriptions set nfInstanceId='"+sdmSubscription.getNfInstanceId()+"',"+ \
(sdmSubscription.implicitUnsubscribeIsSet()?(sdmSubscription.isImplicitUnsubscribe()?"implicitUnsubscribe=1,":"implicitUnsubscribe=0,"):"")+ \
(sdmSubscription.expiresIsSet()?"expires='"+sdmSubscription.getExpires()+"',":"")+ \
"callbackReference='"+sdmSubscription.getCallbackReference()+"',"+ \
// amfServiceName
// singleNssai
(sdmSubscription.dnnIsSet()?"dnn='"+sdmSubscription.getDnn()+"',":"")+ \
(sdmSubscription.subscriptionIdIsSet()?"subscriptionId='"+sdmSubscription.getSubscriptionId()+"',":"")+ \
// plmnId
(sdmSubscription.immediateReportIsSet()?(sdmSubscription.isImmediateReport()?"immediateReport=1,":"immediateReport=0,"):"")+ \
// report
(sdmSubscription.supportedFeaturesIsSet()?"supportedFeatures='"+sdmSubscription.getSupportedFeatures()+"',":"")+ \
//contextInfo
//query += "monitoredResourceUris='[";
// std::vector<std::string> monitoredresourceuris_list = sdmSubscription.getMonitoredResourceUris();
// for(int i=0;i<monitoredresourceuris_list.size();i++)
// {
// if(i==monitoredresourceuris_list.size()-1)
// query += "\"" +monitoredresourceuris_list[i]+"\"";
// else
// query += "\"" +monitoredresourceuris_list[i]+"\",";
// }
//query += "]',";
//j[0]=sdmSubscription.getMonitoredResourceUris();
query += "monitoredResourceUris='"+MonitoredResourceUris_json.dump()+"'";
query += " where ueid="+ueId+" AND subsId="+subsId;
}
else
{
to_json(j, problemdetails);
response.send(Pistache::Http::Code::Not_Found, j.dump());
mysql_free_result(res);
return;
}
mysql_free_result(res);
// std::cout << query << std::endl;
if (mysql_real_query(mysql_WitcommUDRDB,query.c_str(), (unsigned long)query.size()))
{
std::cout << "mysql_real_query failure!" << std::endl;
return;
}
response.send(Pistache::Http::Code::No_Content, "");
}
}
......
/**
* Nudr_DataRepository API OpenAPI file
* Unified Data Repository Service. © 2020, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
* Unified Data Repository Service. © 2020, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 2.1.2
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
......@@ -13,7 +13,7 @@
/*
* SDMSubscriptionDocumentApiImpl.h
*
*
*
*/
#ifndef SDM_SUBSCRIPTION_DOCUMENT_API_IMPL_H_
......@@ -37,6 +37,8 @@
#include <string>
#include <vector>
#include <mysql/mysql.h>
namespace org {
namespace openapitools {
namespace server {
......@@ -46,14 +48,15 @@ using namespace org::openapitools::server::model;
class SDMSubscriptionDocumentApiImpl : public org::openapitools::server::api::SDMSubscriptionDocumentApi {
public:
SDMSubscriptionDocumentApiImpl(std::shared_ptr<Pistache::Rest::Router>);
SDMSubscriptionDocumentApiImpl(std::shared_ptr<Pistache::Rest::Router>, MYSQL *mysql);
~SDMSubscriptionDocumentApiImpl() {}
void modifysdm_subscription(const std::string &ueId, const std::string &subsId, const std::vector<PatchItem> &patchItem, const Pistache::Optional<std::string> &supportedFeatures, Pistache::Http::ResponseWriter &response);
void querysdm_subscription(const std::string &ueId, const std::string &subsId, Pistache::Http::ResponseWriter &response);
void removesdm_subscriptions(const std::string &ueId, const std::string &subsId, Pistache::Http::ResponseWriter &response);
void updatesdmsubscriptions(const std::string &ueId, const std::string &subsId, const SdmSubscription &sdmSubscription, Pistache::Http::ResponseWriter &response);
void updatesdmsubscriptions(const std::string &ueId, const std::string &subsId, SdmSubscription &sdmSubscription, Pistache::Http::ResponseWriter &response);
private:
MYSQL *mysql_WitcommUDRDB;
};
}
......
......@@ -47,7 +47,7 @@ void SMFRegistrationDocumentApiImpl::create_smf_context_non3gpp(const std::strin
if (mysql_num_rows(res))
{
query="update SmfRegistrations set smfInstanceId='"+smfRegistration.getSmfInstanceId()+"',"+ \
(smfRegistration.smfSetIdIsSet()?"smfSetId='"+smfRegistration.getSupportedFeatures()+"',":"")+ \
(smfRegistration.smfSetIdIsSet()?"smfSetId='"+smfRegistration.getSmfSetId()+"',":"")+ \
(smfRegistration.supportedFeaturesIsSet()?"supportedFeatures='"+smfRegistration.getSupportedFeatures()+"',":"")+ \
(smfRegistration.dnnIsSet()?"dnn='"+smfRegistration.getDnn()+"',":"")+ \
(smfRegistration.emergencyServicesIsSet()?(smfRegistration.isEmergencyServices()?"emergencyServices=1,":"emergencyServices=0,"):"")+ \
......@@ -69,7 +69,7 @@ void SMFRegistrationDocumentApiImpl::create_smf_context_non3gpp(const std::strin
query="insert into SmfRegistrations set ueid="+ueId+","+ \
"pduSessionId="+std::to_string(pduSessionId)+","+ \
"smfInstanceId='"+smfRegistration.getSmfInstanceId()+"',"+ \
(smfRegistration.smfSetIdIsSet()?"smfSetId='"+smfRegistration.getSupportedFeatures()+"',":"")+ \
(smfRegistration.smfSetIdIsSet()?"smfSetId='"+smfRegistration.getSmfSetId()+"',":"")+ \
(smfRegistration.supportedFeaturesIsSet()?"supportedFeatures='"+smfRegistration.getSupportedFeatures()+"',":"")+ \
(smfRegistration.dnnIsSet()?"dnn='"+smfRegistration.getDnn()+"',":"")+ \
(smfRegistration.emergencyServicesIsSet()?(smfRegistration.isEmergencyServices()?"emergencyServices=1,":"emergencyServices=0,"):"")+ \
......
......@@ -303,7 +303,7 @@ int main() {
QueryODBDataBySUPIOrGPSIDocumentApiserver.init();
RetrievalOfSharedDataApiImpl RetrievalOfSharedDataApiserver(router);
RetrievalOfSharedDataApiserver.init();
SDMSubscriptionDocumentApiImpl SDMSubscriptionDocumentApiserver(router);
SDMSubscriptionDocumentApiImpl SDMSubscriptionDocumentApiserver(router, &mysql);
SDMSubscriptionDocumentApiserver.init();
SDMSubscriptionsCollectionApiImpl SDMSubscriptionsCollectionApiserver(router);
SDMSubscriptionsCollectionApiserver.init();
......
/**
* Nudr_DataRepository API OpenAPI file
* Unified Data Repository Service. © 2020, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
* Unified Data Repository Service. © 2020, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 2.1.2
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
......@@ -39,7 +39,7 @@ SdmSubscription::SdmSubscription()
m_SupportedFeatures = "";
m_SupportedFeaturesIsSet = false;
m_ContextInfoIsSet = false;
}
SdmSubscription::~SdmSubscription()
......@@ -88,59 +88,59 @@ void from_json(const nlohmann::json& j, SdmSubscription& o)
{
j.at("implicitUnsubscribe").get_to(o.m_ImplicitUnsubscribe);
o.m_ImplicitUnsubscribeIsSet = true;
}
}
if(j.find("expires") != j.end())
{
j.at("expires").get_to(o.m_Expires);
o.m_ExpiresIsSet = true;
}
}
j.at("callbackReference").get_to(o.m_CallbackReference);
if(j.find("amfServiceName") != j.end())
{
j.at("amfServiceName").get_to(o.m_AmfServiceName);
o.m_AmfServiceNameIsSet = true;
}
}
j.at("monitoredResourceUris").get_to(o.m_MonitoredResourceUris);
if(j.find("singleNssai") != j.end())
{
j.at("singleNssai").get_to(o.m_SingleNssai);
o.m_SingleNssaiIsSet = true;
}
}
if(j.find("dnn") != j.end())
{
j.at("dnn").get_to(o.m_Dnn);
o.m_DnnIsSet = true;
}
}
if(j.find("subscriptionId") != j.end())
{
j.at("subscriptionId").get_to(o.m_SubscriptionId);
o.m_SubscriptionIdIsSet = true;
}
}
if(j.find("plmnId") != j.end())
{
j.at("plmnId").get_to(o.m_PlmnId);
o.m_PlmnIdIsSet = true;
}
}
if(j.find("immediateReport") != j.end())
{
j.at("immediateReport").get_to(o.m_ImmediateReport);
o.m_ImmediateReportIsSet = true;
}
}
if(j.find("report") != j.end())
{
j.at("report").get_to(o.m_Report);
o.m_ReportIsSet = true;
}
}
if(j.find("supportedFeatures") != j.end())
{
j.at("supportedFeatures").get_to(o.m_SupportedFeatures);
o.m_SupportedFeaturesIsSet = true;
}
}
if(j.find("contextInfo") != j.end())
{
j.at("contextInfo").get_to(o.m_ContextInfo);
o.m_ContextInfoIsSet = true;
}
}
}
std::string SdmSubscription::getNfInstanceId() const
......
/**
* Nudr_DataRepository API OpenAPI file
* Unified Data Repository Service. © 2020, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
* Unified Data Repository Service. © 2020, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 2.1.2
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
......@@ -12,7 +12,7 @@
/*
* SdmSubscription.h
*
*
*
*/
#ifndef SdmSubscription_H_
......@@ -34,7 +34,7 @@ namespace server {
namespace model {
/// <summary>
///
///
/// </summary>
class SdmSubscription
{
......@@ -48,92 +48,92 @@ public:
/// SdmSubscription members
/// <summary>
///
///
/// </summary>
std::string getNfInstanceId() const;
void setNfInstanceId(std::string const& value);
/// <summary>
///
///
/// </summary>
bool isImplicitUnsubscribe() const;
void setImplicitUnsubscribe(bool const value);
bool implicitUnsubscribeIsSet() const;
void unsetImplicitUnsubscribe();
/// <summary>
///
///
/// </summary>
std::string getExpires() const;
void setExpires(std::string const& value);
bool expiresIsSet() const;
void unsetExpires();
/// <summary>
///
///
/// </summary>
std::string getCallbackReference() const;
void setCallbackReference(std::string const& value);
/// <summary>
///
///
/// </summary>
ServiceName getAmfServiceName() const;
void setAmfServiceName(ServiceName const& value);
bool amfServiceNameIsSet() const;
void unsetAmfServiceName();
/// <summary>
///
///
/// </summary>
std::vector<std::string>& getMonitoredResourceUris();
void setMonitoredResourceUris(std::vector<std::string> const& value);
/// <summary>
///
///
/// </summary>
Snssai getSingleNssai() const;
void setSingleNssai(Snssai const& value);
bool singleNssaiIsSet() const;
void unsetSingleNssai();
/// <summary>
///
///
/// </summary>
std::string getDnn() const;
void setDnn(std::string const& value);
bool dnnIsSet() const;
void unsetDnn();
/// <summary>
///
///
/// </summary>
std::string getSubscriptionId() const;
void setSubscriptionId(std::string const& value);
bool subscriptionIdIsSet() const;
void unsetSubscriptionId();
/// <summary>
///
///
/// </summary>
PlmnId getPlmnId() const;
void setPlmnId(PlmnId const& value);
bool plmnIdIsSet() const;
void unsetPlmnId();
/// <summary>
///
///
/// </summary>
bool isImmediateReport() const;
void setImmediateReport(bool const value);
bool immediateReportIsSet() const;
void unsetImmediateReport();
/// <summary>
///
///
/// </summary>
SubscriptionDataSets getReport() const;
void setReport(SubscriptionDataSets const& value);
bool reportIsSet() const;
void unsetReport();
/// <summary>
///
///
/// </summary>
std::string getSupportedFeatures() const;
void setSupportedFeatures(std::string const& value);
bool supportedFeaturesIsSet() const;
void unsetSupportedFeatures();
/// <summary>
///
///
/// </summary>
ContextInfo getContextInfo() const;
void setContextInfo(ContextInfo const& value);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment