Edit: /tmp/tsx-0/17887-9684b91bd679a08fe82740f2f2569cd88b7a7443 (9093B)
{"code":"__filename=\"/opt/canhelp/apps/api/src/routes/favorites.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,desc2)=>{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:!(desc2=__getOwnPropDesc(from,key))||desc2.enumerable})}return to};var __toCommonJS=mod=>__copyProps(__defProp({},\"__esModule\",{value:true}),mod);var favorites_exports={};__export(favorites_exports,{default:()=>favorites_default});module.exports=__toCommonJS(favorites_exports);var import_hono=require(\"hono\");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;async function checkFavoritesAccess(userId){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({hasFavorites:import_db2.plans.hasFavorites}).from(import_db2.plans).where((0,import_drizzle_orm.eq)(import_db2.plans.id,user.planId));return!!plan?.hasFavorites}__name(checkFavoritesAccess,\"checkFavoritesAccess\");app.get(\"/\",import_auth.requireAuth,async c=>{const user=c.get(\"user\");const rows=await import_db.db.select({favorite:import_db2.favorites,task:import_db2.tasks}).from(import_db2.favorites).leftJoin(import_db2.tasks,(0,import_drizzle_orm.eq)(import_db2.favorites.taskId,import_db2.tasks.id)).where((0,import_drizzle_orm.eq)(import_db2.favorites.userId,user.id)).orderBy((0,import_drizzle_orm.desc)(import_db2.favorites.createdAt));return c.json(rows)});app.post(\"/:taskId\",import_auth.requireAuth,async c=>{const user=c.get(\"user\");const taskId=c.req.param(\"taskId\");const hasAccess=await checkFavoritesAccess(user.id);if(!hasAccess){return c.json({error:\"Your plan does not include favorites\",code:\"PLAN_FEATURE_RESTRICTED\"},403)}const[task]=await import_db.db.select().from(import_db2.tasks).where((0,import_drizzle_orm.eq)(import_db2.tasks.id,taskId));if(!task)return c.json({error:\"Task not found\"},404);const[existing]=await import_db.db.select().from(import_db2.favorites).where((0,import_drizzle_orm.and)((0,import_drizzle_orm.eq)(import_db2.favorites.userId,user.id),(0,import_drizzle_orm.eq)(import_db2.favorites.taskId,taskId)));if(existing)return c.json(existing);const[fav]=await import_db.db.insert(import_db2.favorites).values({userId:user.id,taskId}).returning();return c.json(fav,201)});app.delete(\"/:taskId\",import_auth.requireAuth,async c=>{const user=c.get(\"user\");await import_db.db.delete(import_db2.favorites).where((0,import_drizzle_orm.and)((0,import_drizzle_orm.eq)(import_db2.favorites.userId,user.id),(0,import_drizzle_orm.eq)(import_db2.favorites.taskId,c.req.param(\"taskId\"))));return c.json({ok:true})});app.get(\"/specialists\",import_auth.requireAuth,async c=>{const user=c.get(\"user\");const rows=await import_db.db.select({id:import_db2.specialistFavorites.id,createdAt:import_db2.specialistFavorites.createdAt,specialist:{id:import_db2.users.id,name:import_db2.users.name,firstName:import_db2.users.firstName,lastName:import_db2.users.lastName,image:import_db2.users.image,bio:import_db2.users.bio}}).from(import_db2.specialistFavorites).leftJoin(import_db2.users,(0,import_drizzle_orm.eq)(import_db2.specialistFavorites.specialistId,import_db2.users.id)).where((0,import_drizzle_orm.eq)(import_db2.specialistFavorites.userId,user.id)).orderBy((0,import_drizzle_orm.desc)(import_db2.specialistFavorites.createdAt));return c.json(rows)});app.post(\"/specialists/:specialistId\",import_auth.requireAuth,async c=>{const user=c.get(\"user\");const specialistId=c.req.param(\"specialistId\");if(specialistId===user.id)return c.json({error:\"Cannot favorite yourself\"},400);const hasAccess=await checkFavoritesAccess(user.id);if(!hasAccess){return c.json({error:\"Your plan does not include favorites\",code:\"PLAN_FEATURE_RESTRICTED\"},403)}const[specialist]=await import_db.db.select({id:import_db2.users.id}).from(import_db2.users).where((0,import_drizzle_orm.eq)(import_db2.users.id,specialistId));if(!specialist)return c.json({error:\"Specialist not found\"},404);const[existing]=await import_db.db.select().from(import_db2.specialistFavorites).where((0,import_drizzle_orm.and)((0,import_drizzle_orm.eq)(import_db2.specialistFavorites.userId,user.id),(0,import_drizzle_orm.eq)(import_db2.specialistFavorites.specialistId,specialistId)));if(existing)return c.json(existing);const[fav]=await import_db.db.insert(import_db2.specialistFavorites).values({userId:user.id,specialistId}).returning();return c.json(fav,201)});app.delete(\"/specialists/:specialistId\",import_auth.requireAuth,async c=>{const user=c.get(\"user\");await import_db.db.delete(import_db2.specialistFavorites).where((0,import_drizzle_orm.and)((0,import_drizzle_orm.eq)(import_db2.specialistFavorites.userId,user.id),(0,import_drizzle_orm.eq)(import_db2.specialistFavorites.specialistId,c.req.param(\"specialistId\"))));return c.json({ok:true})});var favorites_default=app;\n})()\n","warnings":[],"map":{"version":3,"mappings":"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","names":["import_db"],"ignoreList":[],"sources":["/opt/canhelp/apps/api/src/routes/favorites.ts"],"sourcesContent":[null]}}