From 92395aee54b058c6f24218493aac4c566c563356 Mon Sep 17 00:00:00 2001 From: Matias Date: Thu, 5 May 2022 16:27:20 -0300 Subject: [PATCH] Adding new repositories to delete all the advertisement's data --- src/api/aa74f91cfcf3ddae/index.js | 61 +++++++++++++++++++ src/config/api.json | 9 +++ src/database/database.js | 16 ++++- src/database/repositories/advertiser.js | 37 +++++++++++ .../repositories/advertiser_attributes.js | 24 +++++++- src/database/repositories/balance.js | 48 +++++++++++++++ src/database/repositories/block_log.js | 48 +++++++++++++++ src/database/repositories/click_log.js | 48 +++++++++++++++ .../repositories/consumer_attributes.js | 24 +++++++- src/database/repositories/ledger.js | 48 +++++++++++++++ src/database/repositories/repositories.js | 8 ++- src/database/repositories/request_log.js | 48 +++++++++++++++ 12 files changed, 413 insertions(+), 6 deletions(-) create mode 100644 src/api/aa74f91cfcf3ddae/index.js create mode 100644 src/database/repositories/balance.js create mode 100644 src/database/repositories/block_log.js create mode 100644 src/database/repositories/click_log.js create mode 100644 src/database/repositories/ledger.js create mode 100644 src/database/repositories/request_log.js diff --git a/src/api/aa74f91cfcf3ddae/index.js b/src/api/aa74f91cfcf3ddae/index.js new file mode 100644 index 0000000..6db1d22 --- /dev/null +++ b/src/api/aa74f91cfcf3ddae/index.js @@ -0,0 +1,61 @@ +import Endpoint from '../endpoint'; +import database from '../../database/database'; + + +/** + * api remove_advertisment_by_id + */ + +class _aa74f91cfcf3ddae extends Endpoint { + constructor() { + super('aa74f91cfcf3ddae'); + } + + /** + * remove advertisment by id + * @param app + * @param req (p0: advertisement_guid) + * @param res + */ + + handler(app, req, res) { + + const { + p0: advertisementGUID + } = req.query; + + const advertiserRepository = database.getRepository('advertiser'); + advertiserRepository.delete({advertisement_guid: advertisementGUID}).then(data => { + const attributesRepository = database.getRepository('advertiser_attributes'); + return attributesRepository.delete({advertisement_guid: advertisementGUID}); + }).then(data => { + const balanceRepository = database.getRepository('balance'); + return balanceRepository.delete({advertisement_guid: advertisementGUID}); + }).then(data => { + const blockLogRepository = database.getRepository('block_log'); + return blockLogRepository.delete({advertisement_guid: advertisementGUID}); + }).then(data => { + const clickLogRepository = database.getRepository('click_log'); + return clickLogRepository.delete({advertisement_guid: advertisementGUID}); + }).then(data => { + const requestRepository = database.getRepository('request_log'); + return requestRepository.delete({advertisement_guid: advertisementGUID}); + }).then(data => { + const ledgerRepository = database.getRepository('ledger'); + ledgerRepository.delete({advertisement_guid: advertisementGUID}); + res.send({ + api_status : 'success', + data: data + }); + + }).catch(e => { + res.send({ + api_status : 'fail', + api_message: `unexpected generic api error: (${e})` + }) + }) + } +} + + +export default new _aa74f91cfcf3ddae(); \ No newline at end of file diff --git a/src/config/api.json b/src/config/api.json index 185d5c9..5553a2e 100644 --- a/src/config/api.json +++ b/src/config/api.json @@ -116,6 +116,15 @@ "version_released": "1.0.0", "permission": "{\"require_identity\": false, \"private\": false}", "enable": true + }, + { + "id": "aa74f91cfcf3ddae", + "name": "remove_ad", + "description": "remove add", + "method": "GET", + "version_released": "1.0.0", + "permission": "{\"require_identity\": false, \"private\": false}", + "enable": true } ] } diff --git a/src/database/database.js b/src/database/database.js index d21c0cb..fc94faf 100644 --- a/src/database/database.js +++ b/src/database/database.js @@ -1,7 +1,7 @@ import config from '../config/config'; import { Advertiser, API, Consumer, Keychain, Language, Node, Normalization, Schema, - Wallet, Config, AdvertiserAttributes + Wallet, Config, AdvertiserAttributes, ConsumerAttributes, Balance, BlockLog, ClickLog, Ledger, RequestLog } from './repositories/repositories'; import mutex from '../core/mutex'; import eventBus from '../core/event-bus'; @@ -391,6 +391,9 @@ export class Database { this.repositories['advertiser_attributes'] = new AdvertiserAttributes(this.database); this.repositories['advertiser_attributes'].setNormalizationRepository(this.repositories['normalization']); + this.repositories['consumer_attributes'] = new ConsumerAttributes(this.database); + this.repositories['consumer_attributes'].setNormalizationRepository(this.repositories['normalization']); + this.repositories['node'] = new Node(this.database); this.repositories['node'].setNormalizationRepository(this.repositories['normalization']); @@ -401,6 +404,17 @@ export class Database { this.repositories['consumer'] = new Consumer(this.database); this.repositories['consumer'].setNormalizationRepository(this.repositories['normalization']); + + this.repositories['balance'] = new Balance(this.database); + + this.repositories['block_log'] = new BlockLog(this.database); + + this.repositories['click_log'] = new ClickLog(this.database); + + this.repositories['ledger'] = new Ledger(this.database); + + this.repositories['request_log'] = new RequestLog(this.database); + return this.repositories['normalization'].load(); } diff --git a/src/database/repositories/advertiser.js b/src/database/repositories/advertiser.js index 80ac1ab..6b11857 100644 --- a/src/database/repositories/advertiser.js +++ b/src/database/repositories/advertiser.js @@ -390,6 +390,21 @@ export default class Advertiser { + getAdvertisementById(where) { + return new Promise((resolve, reject) => { + const { + sql, + parameters + } = Database.buildQuery('SELECT * FROM advertisement_advertiser.advertisement',where); + this.database.get(sql, parameters, (err, advertisement) => { + if (err) { + return reject(err); + } + resolve(advertisement) + }); + }); + } + getAdvertisementById(where) { return new Promise((resolve, reject) => { const { @@ -830,4 +845,26 @@ export default class Advertiser { }); }); } + + delete(where) { + + return new Promise((resolve, reject) => { + + if(!where){ + return reject("At least one condition must be specified"); + } + + const { + sql, + parameters + } = Database.buildQuery('DELETE FROM advertisement_advertiser.advertisement', where); + this.database.run(sql, parameters, (err) => { + if (err) { + console.log('[database] error', err); + return reject(err); + } + resolve(); + }); + }); + } } diff --git a/src/database/repositories/advertiser_attributes.js b/src/database/repositories/advertiser_attributes.js index 7a1113d..51617bb 100644 --- a/src/database/repositories/advertiser_attributes.js +++ b/src/database/repositories/advertiser_attributes.js @@ -1,9 +1,8 @@ import {Database} from '../database'; export default class AdvertiserAttributes { - constructor(database,normalizationRepository) { + constructor(database) { this.database = database; - this.normalizationRepository = normalizationRepository; } setNormalizationRepository(repository) { @@ -29,4 +28,25 @@ export default class AdvertiserAttributes { }); }); } + + delete(where) { + return new Promise((resolve, reject) => { + + if(!where){ + return reject("At least one condition must be specified"); + } + + const { + sql, + parameters + } = Database.buildQuery('DELETE FROM advertisement_advertiser.advertisement_attribute', where); + this.database.run(sql, parameters, (err) => { + if (err) { + console.log('[database] error', err); + return reject(err); + } + resolve(); + }); + }); + } } \ No newline at end of file diff --git a/src/database/repositories/balance.js b/src/database/repositories/balance.js new file mode 100644 index 0000000..336c9d5 --- /dev/null +++ b/src/database/repositories/balance.js @@ -0,0 +1,48 @@ +import {Database} from '../database'; + +export default class Balance { + constructor(database) { + this.database = database; + } + + get(where) { + return new Promise((resolve, reject) => { + const { + sql, + parameters + } = Database.buildQuery('SELECT * FROM advertisement_advertiser.advertisement_balance',where); + this.database.all(sql, parameters, (err, data) => { + if (err) { + return reject(err); + } + + data.map(attribute => { + attribute.attribute_type= this.normalizationRepository.getType(attribute.attribute_type_guid) + attribute.object = this.normalizationRepository.getType(attribute.object_guid) + }) + resolve(data) + }); + }); + } + + delete(where) { + return new Promise((resolve, reject) => { + + if(!where){ + return reject("At least one condition must be specified"); + } + + const { + sql, + parameters + } = Database.buildQuery('DELETE FROM advertisement_advertiser.advertisement_balance', where); + this.database.run(sql, parameters, (err) => { + if (err) { + console.log('[database] error', err); + return reject(err); + } + resolve(); + }); + }); + } +} \ No newline at end of file diff --git a/src/database/repositories/block_log.js b/src/database/repositories/block_log.js new file mode 100644 index 0000000..a3a5c6d --- /dev/null +++ b/src/database/repositories/block_log.js @@ -0,0 +1,48 @@ +import {Database} from '../database'; + +export default class BlockLog { + constructor(database) { + this.database = database; + } + + get(where) { + return new Promise((resolve, reject) => { + const { + sql, + parameters + } = Database.buildQuery('SELECT * FROM advertisement_advertiser.advertisement_block_log',where); + this.database.all(sql, parameters, (err, data) => { + if (err) { + return reject(err); + } + + data.map(attribute => { + attribute.attribute_type= this.normalizationRepository.getType(attribute.attribute_type_guid) + attribute.object = this.normalizationRepository.getType(attribute.object_guid) + }) + resolve(data) + }); + }); + } + + delete(where) { + return new Promise((resolve, reject) => { + + if(!where){ + return reject("At least one condition must be specified"); + } + + const { + sql, + parameters + } = Database.buildQuery('DELETE FROM advertisement_advertiser.advertisement_block_log', where); + this.database.run(sql, parameters, (err) => { + if (err) { + console.log('[database] error', err); + return reject(err); + } + resolve(); + }); + }); + } +} \ No newline at end of file diff --git a/src/database/repositories/click_log.js b/src/database/repositories/click_log.js new file mode 100644 index 0000000..20dc4fe --- /dev/null +++ b/src/database/repositories/click_log.js @@ -0,0 +1,48 @@ +import {Database} from '../database'; + +export default class ClickLog { + constructor(database) { + this.database = database; + } + + get(where) { + return new Promise((resolve, reject) => { + const { + sql, + parameters + } = Database.buildQuery('SELECT * FROM advertisement_advertiser.advertisement_click_log',where); + this.database.all(sql, parameters, (err, data) => { + if (err) { + return reject(err); + } + + data.map(attribute => { + attribute.attribute_type= this.normalizationRepository.getType(attribute.attribute_type_guid) + attribute.object = this.normalizationRepository.getType(attribute.object_guid) + }) + resolve(data) + }); + }); + } + + delete(where) { + return new Promise((resolve, reject) => { + + if(!where){ + return reject("At least one condition must be specified"); + } + + const { + sql, + parameters + } = Database.buildQuery('DELETE FROM advertisement_advertiser.advertisement_click_log', where); + this.database.run(sql, parameters, (err) => { + if (err) { + console.log('[database] error', err); + return reject(err); + } + resolve(); + }); + }); + } +} \ No newline at end of file diff --git a/src/database/repositories/consumer_attributes.js b/src/database/repositories/consumer_attributes.js index f3a35fe..a6fce32 100644 --- a/src/database/repositories/consumer_attributes.js +++ b/src/database/repositories/consumer_attributes.js @@ -1,9 +1,8 @@ import {Database} from '../database'; export default class ConsumerAttributes { - constructor(database,normalizationRepository) { + constructor(database) { this.database = database; - this.normalizationRepository = normalizationRepository; } setNormalizationRepository(repository) { @@ -62,4 +61,25 @@ export default class ConsumerAttributes { }); }); } + + delete(where) { + return new Promise((resolve, reject) => { + + if(!where){ + return reject("At least one condition must be specified"); + } + + const { + sql, + parameters + } = Database.buildQuery('DELETE FROM advertisement_consumer.advertisement_attribute', where); + this.database.run(sql, parameters, (err) => { + if (err) { + console.log('[database] error', err); + return reject(err); + } + resolve(); + }); + }); + } } \ No newline at end of file diff --git a/src/database/repositories/ledger.js b/src/database/repositories/ledger.js new file mode 100644 index 0000000..325f69b --- /dev/null +++ b/src/database/repositories/ledger.js @@ -0,0 +1,48 @@ +import {Database} from '../database'; + +export default class Ledger { + constructor(database) { + this.database = database; + } + + get(where) { + return new Promise((resolve, reject) => { + const { + sql, + parameters + } = Database.buildQuery('SELECT * FROM advertisement_advertiser.advertisement_balance',where); + this.database.all(sql, parameters, (err, data) => { + if (err) { + return reject(err); + } + + data.map(attribute => { + attribute.attribute_type= this.normalizationRepository.getType(attribute.attribute_type_guid) + attribute.object = this.normalizationRepository.getType(attribute.object_guid) + }) + resolve(data) + }); + }); + } + + delete(where) { + return new Promise((resolve, reject) => { + + if(!where){ + return reject("At least one condition must be specified"); + } + + const { + sql, + parameters + } = Database.buildQuery('DELETE FROM advertisement_advertiser.advertisement_balance', where); + this.database.run(sql, parameters, (err) => { + if (err) { + console.log('[database] error', err); + return reject(err); + } + resolve(); + }); + }); + } +} \ No newline at end of file diff --git a/src/database/repositories/repositories.js b/src/database/repositories/repositories.js index 88cef41..e13066f 100644 --- a/src/database/repositories/repositories.js +++ b/src/database/repositories/repositories.js @@ -9,8 +9,14 @@ import Keychain from './keychain'; import Wallet from './wallet'; import Config from './config'; import AdvertiserAttributes from './advertiser_attributes'; +import ConsumerAttributes from './consumer_attributes'; +import Balance from './balance'; +import BlockLog from './block_log'; +import ClickLog from './click_log'; +import Ledger from './ledger'; +import RequestLog from './request_log'; export { Advertiser, Consumer, Node, Schema, API, AdvertiserAttributes, Normalization, Language, Wallet, Keychain, - Config + Config, ConsumerAttributes, Balance, BlockLog, ClickLog, Ledger, RequestLog }; diff --git a/src/database/repositories/request_log.js b/src/database/repositories/request_log.js new file mode 100644 index 0000000..863aa75 --- /dev/null +++ b/src/database/repositories/request_log.js @@ -0,0 +1,48 @@ +import {Database} from '../database'; + +export default class RequestLog { + constructor(database) { + this.database = database; + } + + get(where) { + return new Promise((resolve, reject) => { + const { + sql, + parameters + } = Database.buildQuery('SELECT * FROM advertisement_advertiser.advertisement_request_log',where); + this.database.all(sql, parameters, (err, data) => { + if (err) { + return reject(err); + } + + data.map(attribute => { + attribute.attribute_type= this.normalizationRepository.getType(attribute.attribute_type_guid) + attribute.object = this.normalizationRepository.getType(attribute.object_guid) + }) + resolve(data) + }); + }); + } + + delete(where) { + return new Promise((resolve, reject) => { + + if(!where){ + return reject("At least one condition must be specified"); + } + + const { + sql, + parameters + } = Database.buildQuery('DELETE FROM advertisement_advertiser.advertisement_request_log', where); + this.database.run(sql, parameters, (err) => { + if (err) { + console.log('[database] error', err); + return reject(err); + } + resolve(); + }); + }); + } +} \ No newline at end of file