|
@@ -447,22 +447,29 @@ exports.urlCountFromDate = ({ date, email }) =>
|
|
|
.catch(err => reject(err));
|
|
.catch(err => reject(err));
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
-exports.banUrl = async ({ id, domain, host, user }) => {
|
|
|
|
|
|
|
+exports.banUrl = async ({ adminEmail, id, domain, host, user }) => {
|
|
|
const session = driver.session();
|
|
const session = driver.session();
|
|
|
const userQuery = user
|
|
const userQuery = user
|
|
|
- ? 'OPTIONAL MATCH (u:USER)-[:CREATED]->(l) SET u.banned = true WITH u ' +
|
|
|
|
|
- 'OPTIONAL MATCH (u)-[:CREATED]->(ls:URL) SET ls.banned = true'
|
|
|
|
|
|
|
+ ? 'OPTIONAL MATCH (u:USER)-[:CREATED]->(l) SET u.banned = true WITH a, u ' +
|
|
|
|
|
+ 'OPTIONAL MATCH (u)-[:CREATED]->(ls:URL) SET ls.banned = true WITH a, u, ls ' +
|
|
|
|
|
+ 'WHERE u.email IS NOT NULL MERGE (a)-[:BANNED]->(u) MERGE (a)-[:BANNED]->(ls) '
|
|
|
: '';
|
|
: '';
|
|
|
const domainQuery = domain
|
|
const domainQuery = domain
|
|
|
- ? 'MERGE (d:DOMAIN { name: $domain }) ON CREATE SET d.banned = true'
|
|
|
|
|
|
|
+ ? 'MERGE (d:DOMAIN { name: $domain }) ON CREATE SET d.banned = true WITH a, d ' +
|
|
|
|
|
+ 'WHERE d.name IS NOT NULL MERGE (a)-[:BANNED]->(d)'
|
|
|
|
|
+ : '';
|
|
|
|
|
+ const hostQuery = host
|
|
|
|
|
+ ? 'MERGE (h:HOST { name: $host }) ON CREATE SET h.banned = true WITH a, h ' +
|
|
|
|
|
+ 'WHERE h.name IS NOT NULL MERGE (a)-[:BANNED]->(h)'
|
|
|
: '';
|
|
: '';
|
|
|
- const hostQuery = host ? 'MERGE (h:HOST { name: $host }) ON CREATE SET h.banned = true' : '';
|
|
|
|
|
- const withL = user || domain || host ? 'WITH l' : '';
|
|
|
|
|
await session.writeTransaction(tx =>
|
|
await session.writeTransaction(tx =>
|
|
|
tx.run(
|
|
tx.run(
|
|
|
'MATCH (l:URL { id: $id }) WHERE NOT (l)-[:USES]->(:DOMAIN) ' +
|
|
'MATCH (l:URL { id: $id }) WHERE NOT (l)-[:USES]->(:DOMAIN) ' +
|
|
|
- `SET l.banned = true ${withL} ${userQuery} ${domainQuery} ${hostQuery}`,
|
|
|
|
|
|
|
+ 'MATCH (a:USER) WHERE a.email = $adminEmail ' +
|
|
|
|
|
+ 'SET l.banned = true WITH l, a MERGE (a)-[:BANNED]->(l) WITH l, a ' +
|
|
|
|
|
+ `${userQuery} ${domainQuery} ${hostQuery}`,
|
|
|
{
|
|
{
|
|
|
|
|
+ adminEmail,
|
|
|
id,
|
|
id,
|
|
|
domain,
|
|
domain,
|
|
|
host,
|
|
host,
|