{"flow":{"id":9,"summary":"Detect Fraudulent Activity","versions":[12,14,18,19,21,22,135],"created_by":"admin","created_at":"2022-07-24T23:54:34.680Z","votes":0,"approved":false,"apps":["postgresql","slack"],"value":{"modules":[{"id":"a","value":{"lock":"","path":null,"type":"rawscript","content":"import { Resource } from \"https://deno.land/x/windmill@v1.47.3/mod.ts\";\nimport { Client } from \"https://deno.land/x/postgres@v0.16.1/mod.ts\";\n\nexport async function main(db: Resource<\"postgresql\">) {\n    let is_fraudulent = false;\n    db.database = db.dbname;\n    db.hostname = db.host;\n    const client = new Client(db);\n\n    let select_query = `SELECT id, email FROM users\n    JOIN transactions ON users.id = transactions.user_id\n    WHERE transactions.amount > 500 AND users.created_at > NOW() - interval '5 days';`;\n\n    const returned_query = await client.queryObject(select_query);\n\n    if (returned_query.rows) {\n        is_fraudulent = true;\n    }\n    return is_fraudulent;\n}","language":"deno","input_transforms":{"db":{"expr":"flow_input.db","type":"javascript"}}},"summary":"Check for fraudulent activity in db","stop_after_if":{"expr":"result == undefined","skip_if_stopped":false},"input_transforms":{}},{"id":"d","value":{"lock":"","path":null,"type":"rawscript","content":"export async function main(dbname: string) {\n  const msg = `Fraudulent activity was detected after inspecting ${dbname}`;\n  return msg;\n}\n","language":"deno","input_transforms":{"dbname":{"expr":"`${flow_input.db.dbname}`","type":"javascript"}}},"summary":"Get warning message used in next steps","stop_after_if":null,"input_transforms":{}},{"id":"b","value":{"type":"branchone","default":[{"id":"c","value":{"path":"hub/111/slack/send_message_to_channel","type":"script","input_transforms":{"text":{"expr":"import { results, flow_input, variable, resource, params } from 'windmill@c'\n\n`${results.d}`","type":"javascript"},"slack":{"expr":"import { results, flow_input, variable, resource, params } from 'windmill@c'\n\nflow_input.slack","type":"javascript"},"channel":{"expr":"import { results, flow_input, variable, resource, params } from 'windmill@c'\n\n`${flow_input.slack_contact_point}`","type":"javascript"}}},"summary":"Send Message to Channel (slack)","stop_after_if":null,"input_transforms":{}}],"branches":[{"expr":"flow_input.slack_contact_point.includes('@')","modules":[{"id":"e","value":{"path":"hub/325/slack/send_direct_message","type":"script","input_transforms":{"text":{"expr":"import { results, flow_input, variable, resource, params } from 'windmill@e'\n\n`${results.d}`","type":"javascript"},"slack":{"expr":"import { results, flow_input, variable, resource, params } from 'windmill@e'\n\nflow_input.slack","type":"javascript"},"user_email":{"expr":"import { results, flow_input, variable, resource, params } from 'windmill@e'\n\n`${flow_input.slack_contact_point}`","type":"javascript"}}},"summary":"Send direct message (slack)","stop_after_if":null,"input_transforms":{}}],"summary":"send direct message"}]},"summary":"","stop_after_if":null,"input_transforms":{}}],"failure_module":null},"schema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["db","slack","slack_contact_point"],"properties":{"db":{"type":"string","format":"resource-postgresql","default":"","description":"postgres resource"},"slack":{"type":"string","format":"resource-slack","default":"","description":"slack resource"},"slack_contact_point":{"type":"string","format":"","default":"","description":"either channel name or email of the user (if you want it to be direct message)"}}},"description":"","recording":null,"vcreated_at":"2022-11-16T21:18:00.154Z","vcreated_by":"mrl5","comments":[]}}