mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2026-02-06 01:46:05 +00:00
feat(backend): db script disable notifications (#9131)
This commit is contained in:
parent
6fc3c03860
commit
07ff0a6b5e
@ -23,10 +23,12 @@
|
||||
"db:data:categories": "ts-node --require tsconfig-paths/register src/db/categories.ts",
|
||||
"db:migrate": "migrate --compiler 'ts:./src/db/compiler.ts' --migrations-dir ./src/db/migrations --store ./src/db/migrate/store.ts",
|
||||
"db:migrate:create": "migrate --compiler 'ts:./src/db/compiler.ts' --migrations-dir ./src/db/migrations --template-file ./src/db/migrate/template.ts --date-format 'yyyymmddHHmmss' create",
|
||||
"db:func:disable:notifications": "ts-node --require tsconfig-paths/register src/db/disable-notifications.ts",
|
||||
"prod:migrate": "migrate --migrations-dir ./build/src/db/migrations --store ./build/src/db/migrate/store.js",
|
||||
"prod:db:data:branding": "node build/src/db/data-branding.js",
|
||||
"prod:db:data:categories": "node build/src/db/categories.js",
|
||||
"prod:db:data:admin": "node build/src/db/admin.js"
|
||||
"prod:db:data:admin": "node build/src/db/admin.js",
|
||||
"prod:db:func:disable:notifications": "node build/src/db/disable-notifications.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-s3": "^3.975.0",
|
||||
|
||||
61
backend/src/db/disable-notifications.ts
Normal file
61
backend/src/db/disable-notifications.ts
Normal file
@ -0,0 +1,61 @@
|
||||
import databaseContext from '@context/database'
|
||||
|
||||
const run = async () => {
|
||||
const args = process.argv.slice(2)
|
||||
|
||||
if (args.length !== 1) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.error('Usage: yarn run db:func:disable-notifications <email>')
|
||||
// eslint-disable-next-line n/no-process-exit
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
const email = args[0]
|
||||
|
||||
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/
|
||||
if (!emailRegex.test(email)) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.error('Error: Invalid email address format')
|
||||
// eslint-disable-next-line n/no-process-exit
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
const { write } = databaseContext()
|
||||
|
||||
const result = (
|
||||
await write({
|
||||
query: `
|
||||
MATCH (:EmailAddress {email: $email})-[:BELONGS_TO]->(user:User)
|
||||
SET user.emailNotificationsFollowingUsers = false
|
||||
SET user.emailNotificationsPostInGroup = false
|
||||
SET user.emailNotificationsCommentOnObservedPost = false
|
||||
SET user.emailNotificationsMention = false
|
||||
SET user.emailNotificationsChatMessage = false
|
||||
SET user.emailNotificationsGroupMemberJoined = false
|
||||
SET user.emailNotificationsGroupMemberLeft = false
|
||||
SET user.emailNotificationsGroupMemberRemoved = false
|
||||
SET user.emailNotificationsGroupMemberRoleChanged = false
|
||||
RETURN toString(count(user)) as count
|
||||
`,
|
||||
variables: {
|
||||
email,
|
||||
},
|
||||
})
|
||||
).records[0].get('count') as string
|
||||
|
||||
if (result !== '1') {
|
||||
// eslint-disable-next-line no-console
|
||||
console.error(`User with email address ${email} not found`)
|
||||
// eslint-disable-next-line n/no-process-exit
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-console
|
||||
console.log(`Notifications for User with email address ${email} disabled`)
|
||||
// eslint-disable-next-line n/no-process-exit
|
||||
process.exit(0)
|
||||
}
|
||||
|
||||
void (async function () {
|
||||
await run()
|
||||
})()
|
||||
Loading…
x
Reference in New Issue
Block a user