d_nullifyOrderNameAndUpdateAuthTypeQuery = getArg("nullify-ordername-and-update-auth-type-query");
d_AddDomainKeyQuery = getArg("add-domain-key-query");
+ d_GetLastInsertedKeyIdQuery = getArg("get-last-inserted-key-id-query");
d_ListDomainKeysQuery = getArg("list-domain-keys-query");
d_GetAllDomainMetadataQuery = getArg("get-all-domain-metadata-query");
d_RemoveEmptyNonTerminalsFromZoneQuery_stmt = NULL;
d_DeleteEmptyNonTerminalQuery_stmt = NULL;
d_AddDomainKeyQuery_stmt = NULL;
+ d_GetLastInsertedKeyIdQuery_stmt = NULL;
d_ListDomainKeysQuery_stmt = NULL;
d_GetAllDomainMetadataQuery_stmt = NULL;
d_GetDomainMetadataQuery_stmt = NULL;
catch (SSqlException &e) {
throw PDNSException("GSQLBackend unable to store key: "+e.txtReason());
}
- return 1; // XXX FIXME, no idea how to get the id
+
+ try {
+ d_GetLastInsertedKeyIdQuery_stmt->execute();
+ if (!d_GetLastInsertedKeyIdQuery_stmt->hasNextRow())
+ throw PDNSException("GSQLBackend unable to get id");
+ SSqlStatement::row_t row;
+ d_GetLastInsertedKeyIdQuery_stmt->nextRow(row);
+ int id = std::stoi(row[0]);
+ d_GetLastInsertedKeyIdQuery_stmt->reset();
+ return id;
+ }
+ catch (SSqlException &e) {
+ throw PDNSException("GSQLBackend unable to get id: "+e.txtReason());
+ }
+
+ return -1;
}
bool GSQLBackend::activateDomainKey(const DNSName& name, unsigned int id)
d_RemoveEmptyNonTerminalsFromZoneQuery_stmt = d_db->prepare(d_RemoveEmptyNonTerminalsFromZoneQuery, 1);
d_DeleteEmptyNonTerminalQuery_stmt = d_db->prepare(d_DeleteEmptyNonTerminalQuery, 2);
d_AddDomainKeyQuery_stmt = d_db->prepare(d_AddDomainKeyQuery, 4);
+ d_GetLastInsertedKeyIdQuery_stmt = d_db->prepare(d_GetLastInsertedKeyIdQuery, 0);
d_ListDomainKeysQuery_stmt = d_db->prepare(d_ListDomainKeysQuery, 1);
d_GetAllDomainMetadataQuery_stmt = d_db->prepare(d_GetAllDomainMetadataQuery, 1);
d_GetDomainMetadataQuery_stmt = d_db->prepare(d_GetDomainMetadataQuery, 2);
release(&d_RemoveEmptyNonTerminalsFromZoneQuery_stmt);
release(&d_DeleteEmptyNonTerminalQuery_stmt);
release(&d_AddDomainKeyQuery_stmt);
+ release(&d_GetLastInsertedKeyIdQuery_stmt);
release(&d_ListDomainKeysQuery_stmt);
release(&d_GetAllDomainMetadataQuery_stmt);
release(&d_GetDomainMetadataQuery_stmt);
string d_DeleteEmptyNonTerminalQuery;
string d_AddDomainKeyQuery;
+ string d_GetLastInsertedKeyIdQuery;
string d_ListDomainKeysQuery;
string d_GetAllDomainMetadataQuery;
string d_GetDomainMetadataQuery;
SSqlStatement* d_RemoveEmptyNonTerminalsFromZoneQuery_stmt;
SSqlStatement* d_DeleteEmptyNonTerminalQuery_stmt;
SSqlStatement* d_AddDomainKeyQuery_stmt;
+ SSqlStatement* d_GetLastInsertedKeyIdQuery_stmt;
SSqlStatement* d_ListDomainKeysQuery_stmt;
SSqlStatement* d_GetAllDomainMetadataQuery_stmt;
SSqlStatement* d_GetDomainMetadataQuery_stmt;