Edit: /tmp/tsx-0/17887-53eeb0dde9ec353bcf08a895d203d75516d9c1bf (6772B)
{"code":"__filename=\"/opt/canhelp/apps/api/src/routes/statuses.ts\";(()=>{\n\"use strict\";var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __hasOwnProp=Object.prototype.hasOwnProperty;var __name=(target,value)=>__defProp(target,\"name\",{value,configurable:true});var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:true})};var __copyProps=(to,from,except,desc)=>{if(from&&typeof from===\"object\"||typeof from===\"function\"){for(let key of __getOwnPropNames(from))if(!__hasOwnProp.call(to,key)&&key!==except)__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable})}return to};var __toCommonJS=mod=>__copyProps(__defProp({},\"__esModule\",{value:true}),mod);var statuses_exports={};__export(statuses_exports,{default:()=>statuses_default});module.exports=__toCommonJS(statuses_exports);var import_hono=require(\"hono\");var import_zod_validator=require(\"@hono/zod-validator\");var import_zod=require(\"zod\");var import_drizzle_orm=require(\"drizzle-orm\");var import_db=require(\"../db.js\");var import_db2=require(\"@canhelp/db\");var import_auth=require(\"../middleware/auth.js\");const app=new import_hono.Hono;const STATUS_DURATION_HOURS=8;async function canUseStatus(userId,statusType){const[user]=await import_db.db.select({planId:import_db2.users.planId,role:import_db2.users.role}).from(import_db2.users).where((0,import_drizzle_orm.eq)(import_db2.users.id,userId));if(user?.role===\"admin\")return true;if(!user?.planId)return false;const[plan]=await import_db.db.select().from(import_db2.plans).where((0,import_drizzle_orm.eq)(import_db2.plans.id,user.planId));if(!plan)return false;if(statusType===\"canhelp_now\")return!!plan.hasCanHelpNowStatus;if(statusType===\"need_help\")return!!plan.hasNeedHelpStatus;return false}__name(canUseStatus,\"canUseStatus\");app.get(\"/me\",import_auth.requireAuth,async c=>{const user=c.get(\"user\");const rows=await import_db.db.select().from(import_db2.userStatuses).where((0,import_drizzle_orm.eq)(import_db2.userStatuses.userId,user.id));const now=new Date;const result=rows.map(s=>{if(s.isActive&&s.expiresAt&&s.expiresAt
{const userId=c.req.param(\"userId\");const now=new Date;const rows=await import_db.db.select({statusType:import_db2.userStatuses.statusType,isActive:import_db2.userStatuses.isActive,activatedAt:import_db2.userStatuses.activatedAt,expiresAt:import_db2.userStatuses.expiresAt}).from(import_db2.userStatuses).where((0,import_drizzle_orm.and)((0,import_drizzle_orm.eq)(import_db2.userStatuses.userId,userId),(0,import_drizzle_orm.eq)(import_db2.userStatuses.isActive,true)));const active=rows.filter(s=>!s.expiresAt||s.expiresAt>now);return c.json(active)});app.post(\"/toggle\",import_auth.requireAuth,(0,import_zod_validator.zValidator)(\"json\",import_zod.z.object({statusType:import_zod.z.enum([\"canhelp_now\",\"need_help\"]),active:import_zod.z.boolean()})),async c=>{const user=c.get(\"user\");const{statusType,active}=c.req.valid(\"json\");if(active){const allowed=await canUseStatus(user.id,statusType);if(!allowed){return c.json({error:`Your plan does not include the \"${statusType}\" status`,code:\"PLAN_FEATURE_RESTRICTED\"},403)}}const now=new Date;const expiresAt=active?new Date(now.getTime()+STATUS_DURATION_HOURS*60*60*1e3):null;const[existing]=await import_db.db.select().from(import_db2.userStatuses).where((0,import_drizzle_orm.and)((0,import_drizzle_orm.eq)(import_db2.userStatuses.userId,user.id),(0,import_drizzle_orm.eq)(import_db2.userStatuses.statusType,statusType)));if(existing){const[updated]=await import_db.db.update(import_db2.userStatuses).set({isActive:active,activatedAt:active?now:existing.activatedAt,expiresAt}).where((0,import_drizzle_orm.eq)(import_db2.userStatuses.id,existing.id)).returning();return c.json(updated)}const[created]=await import_db.db.insert(import_db2.userStatuses).values({userId:user.id,statusType,isActive:active,activatedAt:active?now:null,expiresAt}).returning();return c.json(created,201)});var statuses_default=app;\n})()\n","warnings":[],"map":{"version":3,"mappings":"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","names":["import_db"],"ignoreList":[],"sources":["/opt/canhelp/apps/api/src/routes/statuses.ts"],"sourcesContent":[null]}}