Adding Subscriber Device Table

This commit is contained in:
stephb9959
2022-04-07 22:29:47 -07:00
parent df390466d5
commit 9712c41c64
13 changed files with 91 additions and 92 deletions

2
build
View File

@@ -1 +1 @@
93
94

View File

@@ -536,7 +536,7 @@ components:
operatorId:
type: string
format: uuid
subscriberId:
subscriberDeviceId:
type: string
format: uuid
geoCode:
@@ -658,7 +658,7 @@ components:
operatorId:
type: string
format: uuid
subscriberId:
subscriberDeviceId:
type: string
format: uuid

View File

@@ -626,7 +626,31 @@ namespace OpenWifi {
H.BadRequest(RESTAPI::Errors::InvalidSerialNumber);
return false;
}
return true;
}
template <typename DBType, typename DBRecordType> void ReturnUpdatedObject( DBType & DB, const DBRecordType & R, RESTAPIHandler &H) {
if(DB.UpdateRecord("id",R.info.id,R)) {
DBRecordType Updated;
DB.GetRecord("id",R.info.id,Updated);
Poco::JSON::Object Answer;
Updated.to_json(Answer);
return H.ReturnObject(Answer);
} else {
H.InternalError("Record could not be updated.");
}
}
template <typename DBType, typename DBRecordType> void ReturnCreatedObject( DBType & DB, const DBRecordType & R, RESTAPIHandler &H) {
if(DB.CreateRecord(R)) {
DBRecordType Updated;
DB.GetRecord("id",R.info.id,Updated);
Poco::JSON::Object Answer;
Updated.to_json(Answer);
return H.ReturnObject(Answer);
} else {
H.InternalError("Record could not be created.");
}
}
}

View File

@@ -34,7 +34,7 @@ namespace OpenWifi {
}
// see if anyone is still using this thing
if(!Existing.subscriberId.empty()){
if(!Existing.subscriberDeviceId.empty()){
return BadRequest(RESTAPI::Errors::StillInUse);
}
@@ -51,21 +51,14 @@ namespace OpenWifi {
}
if( !ValidDbId(NewObject.operatorId,StorageService()->OperatorDB(), false, RESTAPI::Errors::InvalidOperatorId, *this ) ||
!ValidDbId(NewObject.managementPolicy,StorageService()->PolicyDB(), false, RESTAPI::Errors::UnknownManagementPolicyUUID, *this ) ||
!ValidContactType(NewObject.type,*this) ||
!ValidSubscriberId(NewObject.subscriberId,true,NewObject.primaryEmail,*this)) {
!ValidDbId(NewObject.managementPolicy,StorageService()->PolicyDB(), true, RESTAPI::Errors::UnknownManagementPolicyUUID, *this ) ||
!ValidDbId(NewObject.subscriberDeviceId,StorageService()->SubscriberDeviceDB(), true, RESTAPI::Errors::InvalidSubscriberDeviceId, *this ) ||
!ValidContactType(NewObject.type,*this) ) {
return;
}
ProvObjects::CreateObjectInfo(RawObject, UserInfo_.userinfo, NewObject.info);
if(DB_.CreateRecord(NewObject)) {
OpContactDB::RecordName New;
StorageService()->OpContactDB().GetRecord("id", NewObject.info.id, New);
Poco::JSON::Object Answer;
New.to_json(Answer);
return ReturnObject(Answer);
}
return InternalError("Contact could not be created.");
return ReturnCreatedObject(DB_,NewObject,*this);
}
void RESTAPI_op_contact_handler::DoPut() {
@@ -84,7 +77,7 @@ namespace OpenWifi {
if( !ValidContactType(UpdateObj.type,*this) ||
!ValidDbId(UpdateObj.managementPolicy,StorageService()->PolicyDB(), true, RESTAPI::Errors::UnknownManagementPolicyUUID, *this ) ||
!ValidSubscriberId(UpdateObj.subscriberId,true,Existing.primaryEmail,*this)
!ValidDbId(UpdateObj.subscriberDeviceId,StorageService()->SubscriberDeviceDB(), true, RESTAPI::Errors::InvalidSubscriberDeviceId, *this )
) {
return;
}
@@ -101,14 +94,10 @@ namespace OpenWifi {
AssignIfPresent(RawObject,"phones",Existing.phones);
AssignIfPresent(RawObject,"accessPIN",Existing.accessPIN);
AssignIfPresent(RawObject,"secondaryEmail",Existing.secondaryEmail);
AssignIfPresent(RawObject,"primaryEmail",Existing.primaryEmail);
AssignIfPresent(RawObject,"subscriberDeviceId",Existing.subscriberDeviceId);
AssignIfPresent(RawObject,"managementPolicy",Existing.managementPolicy);
if(DB_.UpdateRecord("id",uuid,Existing)) {
OpContactDB::RecordName New;
StorageService()->OpContactDB().GetRecord("id", Existing.info.id, New);
Poco::JSON::Object Answer;
New.to_json(Answer);
return ReturnObject(Answer);
}
return InternalError("Contact could not be updated.");
return ReturnUpdatedObject(DB_,Existing,*this);
}
}

View File

@@ -34,7 +34,7 @@ namespace OpenWifi {
}
// see if anyone is still using this thing
if(!Existing.subscriberId.empty()){
if(!Existing.subscriberDeviceId.empty()){
return BadRequest(RESTAPI::Errors::StillInUse);
}
DB_.DeleteRecord("id", uuid);
@@ -51,20 +51,13 @@ namespace OpenWifi {
if( !ValidDbId(NewObject.operatorId,StorageService()->OperatorDB(), false, RESTAPI::Errors::InvalidOperatorId, *this ) ||
!ValidDbId(NewObject.managementPolicy,StorageService()->PolicyDB(), true, RESTAPI::Errors::UnknownManagementPolicyUUID, *this ) ||
!ValidSubscriberId(NewObject.subscriberId,true, *this) ||
!ValidDbId(NewObject.subscriberDeviceId,StorageService()->SubscriberDeviceDB(), true, RESTAPI::Errors::InvalidSubscriberDeviceId, *this ) ||
!ValidLocationType(NewObject.type,*this)) {
return;
}
ProvObjects::CreateObjectInfo(RawObject, UserInfo_.userinfo, NewObject.info);
if(DB_.CreateRecord(NewObject)) {
OpLocationDB::RecordName New;
StorageService()->OpLocationDB().GetRecord("id", NewObject.info.id, New);
Poco::JSON::Object Answer;
New.to_json(Answer);
return ReturnObject(Answer);
}
return InternalError("Location could not be created.");
return ReturnCreatedObject(DB_, NewObject, *this);
}
void RESTAPI_op_location_handler::DoPut() {
@@ -83,14 +76,14 @@ namespace OpenWifi {
if( !ValidLocationType(UpdateObj.type,*this) ||
!ValidDbId(UpdateObj.managementPolicy,StorageService()->PolicyDB(), true, RESTAPI::Errors::UnknownManagementPolicyUUID, *this ) ||
!ValidSubscriberId(UpdateObj.subscriberId,true,*this)
!ValidDbId(UpdateObj.subscriberDeviceId,StorageService()->SubscriberDeviceDB(), true, RESTAPI::Errors::InvalidSubscriberDeviceId, *this )
) {
return;
}
ProvObjects::UpdateObjectInfo(RawObject, UserInfo_.userinfo, Existing.info);
AssignIfPresent(RawObject,"type",Existing.type);
AssignIfPresent(RawObject,"subscriberId", Existing.subscriberId);
AssignIfPresent(RawObject,"subscriberDeviceId", Existing.subscriberDeviceId);
AssignIfPresent(RawObject,"managementPolicy", Existing.managementPolicy);
AssignIfPresent(RawObject,"buildingName",Existing.buildingName);
AssignIfPresent(RawObject,"addressLines",Existing.addressLines);
@@ -102,13 +95,6 @@ namespace OpenWifi {
AssignIfPresent(RawObject,"phones",Existing.phones);
AssignIfPresent(RawObject,"geoCode",Existing.geoCode);
if(DB_.UpdateRecord("id",uuid,Existing)) {
OpLocationDB::RecordName New;
StorageService()->OpLocationDB().GetRecord("id", Existing.info.id, New);
Poco::JSON::Object Answer;
New.to_json(Answer);
return ReturnObject(Answer);
}
return InternalError("Location could not be updated.");
return ReturnUpdatedObject(DB_,Existing,*this);
}
}

View File

@@ -148,16 +148,7 @@ namespace OpenWifi {
AssignIfPresent(RawObject, "firmwareUpgrade", Existing.firmwareUpgrade);
AssignIfPresent(RawObject, "firmwareRCOnly", Existing.firmwareRCOnly);
if(DB_.UpdateRecord("id", Existing.info.id, Existing)) {
ProvObjects::Operator New;
DB_.GetRecord("id",Existing.info.id,New);
Poco::JSON::Object Answer;
New.to_json(Answer);
return ReturnObject(Answer);
}
return InternalError("Failed updating operatpr.");
return ReturnUpdatedObject(DB_, Existing, *this);
}
}

View File

@@ -74,14 +74,7 @@ namespace OpenWifi {
return BadRequest(RESTAPI::Errors::InvalidBillingPeriod);
}
if(DB_.CreateRecord(NewObject)) {
ProvObjects::ServiceClass New;
StorageService()->ServiceClassDB().GetRecord("id", NewObject.info.id, New);
Poco::JSON::Object Answer;
New.to_json(Answer);
return ReturnObject(Answer);
}
return InternalError("Service Class could not be created.");
return ReturnCreatedObject(DB_, NewObject, *this);
}
void RESTAPI_service_class_handler::DoPut() {
@@ -114,13 +107,6 @@ namespace OpenWifi {
Existing.variables = UpdateObj.variables;
}
if(DB_.UpdateRecord("id",uuid,Existing)) {
ProvObjects::ServiceClass New;
StorageService()->ServiceClassDB().GetRecord("id", Existing.info.id, New);
Poco::JSON::Object Answer;
New.to_json(Answer);
return ReturnObject(Answer);
}
return InternalError("Service Class could not be updated.");
return ReturnUpdatedObject(DB_, Existing, *this);
}
}

View File

@@ -59,15 +59,7 @@ namespace OpenWifi {
}
ProvObjects::CreateObjectInfo(RawObject,UserInfo_.userinfo,NewObject.info);
if(DB_.CreateRecord(NewObject)) {
SubscriberDeviceDB::RecordName New;
DB_.GetRecord("id",NewObject.info.id,New);
Poco::JSON::Object Answer;
New.to_json(Answer);
return ReturnObject(Answer);
}
return InternalError("Count not create record.");
return ReturnCreatedObject(DB_,NewObject,*this);
}
void RESTAPI_sub_devices_handler::DoPut() {
@@ -84,7 +76,37 @@ namespace OpenWifi {
return NotFound();
}
if( !ValidDbId(UpdateObj.managementPolicy, StorageService()->PolicyDB(), true , RESTAPI::Errors::UnknownManagementPolicyUUID, *this) ||
!ValidDbId(UpdateObj.contact, StorageService()->OpContactDB(), true, RESTAPI::Errors::InvalidContactId, *this) ||
!ValidDbId(UpdateObj.location, StorageService()->OpLocationDB(), true, RESTAPI::Errors::InvalidLocationId, *this) ||
!ValidDbId(UpdateObj.operatorId, StorageService()->OperatorDB(), true, RESTAPI::Errors::InvalidOperatorId, *this) ||
!ValidDbId(UpdateObj.serviceClass, StorageService()->ServiceClassDB(), true, RESTAPI::Errors::InvalidServiceClassId, *this) ||
!ValidSubscriberId(UpdateObj.subscriberId, true, *this) ||
!ValidRRM(UpdateObj.rrm,*this) ||
!ValidSerialNumber(UpdateObj.serialNumber,false,*this)
) {
return;
}
ProvObjects::UpdateObjectInfo(RawObject,UserInfo_.userinfo,Existing.info);
AssignIfPresent(RawObject, "deviceType", Existing.deviceType);
AssignIfPresent(RawObject, "subscriberId", Existing.subscriberId);
AssignIfPresent(RawObject, "location", Existing.location);
AssignIfPresent(RawObject, "contact", Existing.contact);
AssignIfPresent(RawObject, "managementPolicy", Existing.managementPolicy);
AssignIfPresent(RawObject, "serviceClass", Existing.serviceClass);
AssignIfPresent(RawObject, "qrCode", Existing.qrCode);
AssignIfPresent(RawObject, "geoCode", Existing.geoCode);
AssignIfPresent(RawObject, "rrm", Existing.rrm);
AssignIfPresent(RawObject, "state", Existing.state);
AssignIfPresent(RawObject, "locale", Existing.locale);
AssignIfPresent(RawObject, "billingCode", Existing.billingCode);
AssignIfPresent(RawObject, "realMacAddress", Existing.realMacAddress);
if(RawObject->has("configuration")) {
Existing.configuration = UpdateObj.configuration;
}
return ReturnUpdatedObject(DB_,Existing,*this);
}
}

View File

@@ -371,7 +371,7 @@ namespace OpenWifi::ProvObjects {
field_to_json( Obj,"mobiles",mobiles);
field_to_json( Obj,"geoCode",geoCode);
field_to_json( Obj,"operatorId",operatorId);
field_to_json( Obj,"subscriberId",subscriberId);
field_to_json( Obj,"subscriberDeviceId",subscriberDeviceId);
field_to_json( Obj,"managementPolicy",managementPolicy);
}
@@ -389,7 +389,7 @@ namespace OpenWifi::ProvObjects {
field_from_json( Obj,"mobiles",mobiles);
field_from_json( Obj,"geoCode",geoCode);
field_from_json( Obj,"operatorId",operatorId);
field_from_json( Obj,"subscriberId",subscriberId);
field_from_json( Obj,"subscriberDeviceId",subscriberDeviceId);
field_from_json( Obj,"managementPolicy",managementPolicy);
return true;
} catch (...) {
@@ -473,7 +473,7 @@ namespace OpenWifi::ProvObjects {
field_to_json( Obj,"secondaryEmail",secondaryEmail);
field_to_json( Obj,"accessPIN",accessPIN);
field_to_json( Obj,"operatorId",operatorId);
field_to_json( Obj,"subscriberId",subscriberId);
field_to_json( Obj,"subscriberDeviceId",subscriberDeviceId);
field_to_json( Obj,"managementPolicy",managementPolicy);
}
@@ -493,7 +493,7 @@ namespace OpenWifi::ProvObjects {
field_from_json( Obj,"secondaryEmail",secondaryEmail);
field_from_json( Obj,"accessPIN",accessPIN);
field_from_json( Obj,"operatorId",operatorId);
field_from_json( Obj,"subscriberId",subscriberId);
field_from_json( Obj,"subscriberDeviceId",subscriberDeviceId);
field_from_json( Obj,"managementPolicy",managementPolicy);
return true;
} catch (...) {

View File

@@ -213,7 +213,7 @@ namespace OpenWifi::ProvObjects {
Types::StringVec mobiles;
std::string geoCode;
Types::UUID_t operatorId;
Types::UUID_t subscriberId;
Types::UUID_t subscriberDeviceId;
Types::UUID_t managementPolicy;
void to_json(Poco::JSON::Object &Obj) const;
@@ -307,7 +307,7 @@ namespace OpenWifi::ProvObjects {
std::string secondaryEmail;
std::string accessPIN;
Types::UUID_t operatorId;
Types::UUID_t subscriberId;
Types::UUID_t subscriberDeviceId;
Types::UUID_t managementPolicy;
void to_json(Poco::JSON::Object &Obj) const;

View File

@@ -98,6 +98,7 @@ namespace OpenWifi::RESTAPI::Errors {
static const std::string InvalidLocationType{"Invalid location type"};
static const std::string InvalidOperatorId{"Invalid operator ID"};
static const std::string InvalidServiceClassId{"Invalid service class ID"};
static const std::string InvalidSubscriberDeviceId{"Invalid subscriber device ID"};
}
namespace OpenWifi::RESTAPI::Protocol {

View File

@@ -33,7 +33,7 @@ namespace OpenWifi {
ORM::Field{"operatorId",ORM::FieldType::FT_TEXT},
ORM::Field{"tags",ORM::FieldType::FT_TEXT},
ORM::Field{"managementPolicy",ORM::FieldType::FT_TEXT},
ORM::Field{"subscriberId",ORM::FieldType::FT_TEXT}
ORM::Field{"subscriberDeviceId",ORM::FieldType::FT_TEXT}
};
static ORM::IndexVec OpContactDB_Indexes{
@@ -70,7 +70,7 @@ template<> void ORM::DB<OpenWifi::OpContactDBRecordType, OpenWifi::ProvObjects::
Out.operatorId = In.get<18>();
Out.info.tags = OpenWifi::RESTAPI_utils::to_taglist(In.get<19>());
Out.managementPolicy = In.get<20>();
Out.subscriberId = In.get<21>();
Out.subscriberDeviceId = In.get<21>();
}
template<> void ORM::DB<OpenWifi::OpContactDBRecordType, OpenWifi::ProvObjects::OperatorContact>::Convert(const OpenWifi::ProvObjects::OperatorContact &In, OpenWifi::OpContactDBRecordType &Out) {
@@ -95,5 +95,5 @@ template<> void ORM::DB<OpenWifi::OpContactDBRecordType, OpenWifi::ProvObjects::
Out.set<18>(In.operatorId);
Out.set<19>(OpenWifi::RESTAPI_utils::to_string(In.info.tags));
Out.set<20>(In.managementPolicy);
Out.set<21>(In.subscriberId);
Out.set<21>(In.subscriberDeviceId);
}

View File

@@ -31,7 +31,7 @@ namespace OpenWifi {
ORM::Field{"operatorId",ORM::FieldType::FT_TEXT},
ORM::Field{"tags",ORM::FieldType::FT_TEXT},
ORM::Field{"managementPolicy",ORM::FieldType::FT_TEXT},
ORM::Field{"subscriberId",ORM::FieldType::FT_TEXT}
ORM::Field{"subscriberDeviceId",ORM::FieldType::FT_TEXT}
};
static ORM::IndexVec OpLocationDB_Indexes{
@@ -65,7 +65,7 @@ template<> void ORM::DB<OpenWifi::OpLocationDBRecordType , OpenWifi::ProvObjects
Out.operatorId = In.get<16>();
Out.info.tags = OpenWifi::RESTAPI_utils::to_taglist(In.get<17>());
Out.managementPolicy = In.get<18>();
Out.subscriberId = In.get<19>();
Out.subscriberDeviceId = In.get<19>();
}
template<> void ORM::DB<OpenWifi::OpLocationDBRecordType, OpenWifi::ProvObjects::OperatorLocation>::Convert(const OpenWifi::ProvObjects::OperatorLocation &In, OpenWifi::OpLocationDBRecordType &Out) {
@@ -88,5 +88,5 @@ template<> void ORM::DB<OpenWifi::OpLocationDBRecordType, OpenWifi::ProvObjects:
Out.set<16>(In.operatorId);
Out.set<17>(OpenWifi::RESTAPI_utils::to_string(In.info.tags));
Out.set<18>(In.managementPolicy);
Out.set<19>(In.subscriberId);
Out.set<19>(In.subscriberDeviceId);
}