merge test #1

Merged
shafi merged 8 commits from test into main 2026-03-09 15:50:27 +00:00
139 changed files with 7224 additions and 460 deletions

View file

@ -0,0 +1,4 @@
{
"dependencies": "c63a16a85154f1ea03750b1df53dcdee0200585f",
"devDependencies": "0a1ec1c6df1c9d5100926df058dd0824b1293819"
}

View file

@ -1,3 +1,7 @@
{ {
"expo": {} "expo": {
"ios": {
"bundleIdentifier": "com.mohammedshafiuddin54.meat-farmer-monorepo"
}
}
} }

View file

@ -1,4 +1,4 @@
{ {
"dependencies": "091948e86692e0cce7744b6b0543448538c3125a", "dependencies": "4650ceb7c30aaa4d5fd17b9577e186af7a84b50d",
"devDependencies": "b3b38265f32b99a8299270a292f38ca26288d53d" "devDependencies": "b3b38265f32b99a8299270a292f38ca26288d53d"
} }

View file

@ -18,6 +18,7 @@ interface MenuItem {
iconBg?: string; iconBg?: string;
badgeCount?: number; badgeCount?: number;
onPress?: () => void; onPress?: () => void;
testID?: string;
} }
interface MenuItemComponentProps { interface MenuItemComponentProps {
@ -100,6 +101,7 @@ export default function Dashboard() {
category: 'quick', category: 'quick',
iconColor: '#06B6D4', iconColor: '#06B6D4',
iconBg: '#CFFAFE', iconBg: '#CFFAFE',
testID: 'delivery-slots-menu-item',
}, },
{ {
title: 'Add Product', title: 'Add Product',
@ -245,6 +247,8 @@ export default function Dashboard() {
{quickActions.map((item) => ( {quickActions.map((item) => (
<Pressable <Pressable
key={`quick-${item.route}`} key={`quick-${item.route}`}
testID={item.testID}
accessibilityLabel={item.testID}
onPress={() => item.onPress ? item.onPress() : router.push(item.route as any)} onPress={() => item.onPress ? item.onPress() : router.push(item.route as any)}
style={({ pressed }) => [ style={({ pressed }) => [
tw`bg-white rounded-xl p-3 shadow-sm border border-gray-100 items-center`, tw`bg-white rounded-xl p-3 shadow-sm border border-gray-100 items-center`,

View file

@ -275,6 +275,8 @@ export default function Slots() {
{/* FAB for Add New Slot */} {/* FAB for Add New Slot */}
<MyTouchableOpacity <MyTouchableOpacity
testID="add-slot-fab"
accessibilityLabel="add-slot-fab"
onPress={() => router.push('/slots/add' as any)} onPress={() => router.push('/slots/add' as any)}
activeOpacity={0.95} activeOpacity={0.95}
style={{ position: 'absolute', bottom: 32, right: 24, zIndex: 100 }} style={{ position: 'absolute', bottom: 32, right: 24, zIndex: 100 }}

View file

@ -11,7 +11,11 @@ export default function Layout() {
<QueryClientProvider client={queryClient}> <QueryClientProvider client={queryClient}>
<trpc.Provider client={trpcClient} queryClient={queryClient}> <trpc.Provider client={trpcClient} queryClient={queryClient}>
<StaffAuthProvider> <StaffAuthProvider>
<SafeAreaView edges={['left', 'right', 'bottom']} style={{ flex: 1, backgroundColor: '#fff' }}> <SafeAreaView
edges={['left', 'right', 'bottom']}
style={{ flex: 1, backgroundColor: '#fff' }}
testID="app-root"
>
<RefreshProvider queryClient={queryClient}> <RefreshProvider queryClient={queryClient}>
<Stack screenOptions={{ headerShown: false }} /> <Stack screenOptions={{ headerShown: false }} />
</RefreshProvider> </RefreshProvider>

View file

@ -26,7 +26,6 @@ export default function LoginScreen() {
} }
}; };
console.log('from the login page')
return ( return (
@ -52,6 +51,8 @@ export default function LoginScreen() {
autoCapitalize="none" autoCapitalize="none"
autoCorrect={false} autoCorrect={false}
style={{ marginBottom: 20 }} style={{ marginBottom: 20 }}
testID="login-name-input"
accessibilityLabel="login-name-input"
/> />
<MyTextInput <MyTextInput
@ -63,6 +64,8 @@ export default function LoginScreen() {
autoCapitalize="none" autoCapitalize="none"
autoCorrect={false} autoCorrect={false}
style={{ marginBottom: 30 }} style={{ marginBottom: 30 }}
testID="login-password-input"
accessibilityLabel="login-password-input"
/> />
{loginError && ( {loginError && (
@ -84,6 +87,8 @@ export default function LoginScreen() {
disabled={isLoggingIn} disabled={isLoggingIn}
fullWidth fullWidth
style={{ marginBottom: 20 }} style={{ marginBottom: 20 }}
testID="login-button"
accessibilityLabel="login-button"
/> />
</View> </View>
</AppContainer> </AppContainer>

View file

@ -147,6 +147,7 @@ export default function ProductsSelector({
{showGroups && groups.length > 0 && ( {showGroups && groups.length > 0 && (
<View style={tw`mb-4`}> <View style={tw`mb-4`}>
<BottomDropdown <BottomDropdown
testID="product-groups-dropdown"
label="Select Product Groups" label="Select Product Groups"
options={groupOptions} options={groupOptions}
value={selectedGroupIds.map(id => id.toString())} value={selectedGroupIds.map(id => id.toString())}

View file

@ -148,12 +148,22 @@ export default function SlotForm({
<View style={tw`mb-4`}> <View style={tw`mb-4`}>
<Text style={tw`text-lg font-semibold mb-2`}>Delivery Date & Time</Text> <Text style={tw`text-lg font-semibold mb-2`}>Delivery Date & Time</Text>
<DateTimePickerMod value={values.deliveryTime} setValue={(value) => setFieldValue('deliveryTime', value)} /> <DateTimePickerMod
dateTestID="delivery-date-picker"
timeTestID="delivery-time-picker"
value={values.deliveryTime}
setValue={(value) => setFieldValue('deliveryTime', value)}
/>
</View> </View>
<View style={tw`mb-4`}> <View style={tw`mb-4`}>
<Text style={tw`text-lg font-semibold mb-2`}>Freeze Date & Time</Text> <Text style={tw`text-lg font-semibold mb-2`}>Freeze Date & Time</Text>
<DateTimePickerMod value={values.freezeTime} setValue={(value) => setFieldValue('freezeTime', value)} /> <DateTimePickerMod
dateTestID="freeze-date-picker"
timeTestID="freeze-time-picker"
value={values.freezeTime}
setValue={(value) => setFieldValue('freezeTime', value)}
/>
</View> </View>
<View style={tw`mb-4`}> <View style={tw`mb-4`}>
@ -220,6 +230,8 @@ export default function SlotForm({
</FieldArray> </FieldArray>
<TouchableOpacity <TouchableOpacity
testID="create-slot-button"
accessibilityLabel="create-slot-button"
onPress={() => handleSubmit()} onPress={() => handleSubmit()}
disabled={isPending} disabled={isPending}
style={tw`${isPending ? 'bg-pink2' : 'bg-pink1'} p-3 rounded-lg items-center mt-6 pb-4`} style={tw`${isPending ? 'bg-pink2' : 'bg-pink1'} p-3 rounded-lg items-center mt-6 pb-4`}

View file

@ -1,6 +1,6 @@
import { createTRPCProxyClient, httpBatchLink, TRPCClientError } from '@trpc/client'; import { createTRPCProxyClient, httpBatchLink, TRPCClientError } from '@trpc/client';
import { createTRPCReact } from '@trpc/react-query'; import { createTRPCReact } from '@trpc/react-query';
import {AppRouter} from '../../backend/src/trpc/router' import { AppRouter } from '@backend/trpc/router'
import { BASE_API_URL } from 'common-ui'; import { BASE_API_URL } from 'common-ui';
import { getJWT } from '@/hooks/useJWT'; import { getJWT } from '@/hooks/useJWT';
import { FORCE_LOGOUT_EVENT } from 'common-ui/src/lib/const-strs'; import { FORCE_LOGOUT_EVENT } from 'common-ui/src/lib/const-strs';

View file

@ -4,7 +4,11 @@
"strict": true, "strict": true,
"paths": { "paths": {
"@/*": [ "@/*": [
"./*" "./*",
"../backend/*"
],
"@backend/*": [
"../backend/src/*"
], ],
"shared-types": ["../shared-types"], "shared-types": ["../shared-types"],
"common-ui": ["../../packages/ui"], "common-ui": ["../../packages/ui"],

File diff suppressed because one or more lines are too long

View file

@ -5,19 +5,19 @@ import cors from "cors";
import multer from "multer"; import multer from "multer";
import path from "path"; import path from "path";
import fs from "fs"; import fs from "fs";
import { db } from './src/db/db_index'; import { db } from '@/src/db/db_index';
import { staffUsers, userDetails } from './src/db/schema'; import { staffUsers, userDetails } from '@/src/db/schema';
import { eq } from 'drizzle-orm'; import { eq } from 'drizzle-orm';
import mainRouter from './src/main-router'; import mainRouter from '@/src/main-router';
import initFunc from './src/lib/init'; import initFunc from '@/src/lib/init';
import { createExpressMiddleware } from '@trpc/server/adapters/express'; import { createExpressMiddleware } from '@trpc/server/adapters/express';
import { appRouter } from './src/trpc/router'; import { appRouter } from '@/src/trpc/router';
import { TRPCError } from '@trpc/server'; import { TRPCError } from '@trpc/server';
import jwt from 'jsonwebtoken' import jwt from 'jsonwebtoken'
import signedUrlCache from 'src/lib/signed-url-cache'; import signedUrlCache from '@/src/lib/signed-url-cache';
import { seed } from 'src/db/seed'; import { seed } from '@/src/db/seed';
import './src/jobs/jobs-index'; import '@/src/jobs/jobs-index';
import { startAutomatedJobs } from './src/lib/automatedJobs'; import { startAutomatedJobs } from '@/src/lib/automatedJobs';
seed() seed()
initFunc() initFunc()

View file

@ -5,7 +5,7 @@
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1", "test": "echo \"Error: no test specified\" && exit 1",
"migrate": "drizzle-kit generate:pg", "migrate": "drizzle-kit generate:pg",
"build": "rimraf ./dist && tsc --project tsconfig.json", "build": "rimraf ./dist && tsc --project tsconfig.json && tsc-alias -p tsconfig.json",
"build2": "rimraf ./dist && tsc", "build2": "rimraf ./dist && tsc",
"db:push": "drizzle-kit push:pg", "db:push": "drizzle-kit push:pg",
"db:seed": "tsx src/db/seed.ts", "db:seed": "tsx src/db/seed.ts",
@ -55,6 +55,7 @@
"rimraf": "^6.1.2", "rimraf": "^6.1.2",
"ts-node-dev": "^2.0.0", "ts-node-dev": "^2.0.0",
"tsx": "^4.20.5", "tsx": "^4.20.5",
"tsc-alias": "^1.8.16",
"typescript": "^5.9.2" "typescript": "^5.9.2"
} }
} }

View file

@ -1,7 +1,7 @@
import { Router } from "express"; import { Router } from "express";
import { authenticateStaff } from "../middleware/staff-auth"; import { authenticateStaff } from "@/src/middleware/staff-auth";
import productRouter from "./product.router"; import productRouter from "@/src/apis/admin-apis/apis/product.router"
import tagRouter from "./tag.router"; import tagRouter from "@/src/apis/admin-apis/apis/tag.router"
const router = Router(); const router = Router();

View file

@ -1,11 +1,11 @@
import { Request, Response } from "express"; import { Request, Response } from "express";
import { db } from "../db/db_index"; import { db } from "@/src/db/db_index";
import { productTagInfo } from "../db/schema"; import { productTagInfo } from "@/src/db/schema";
import { eq } from "drizzle-orm"; import { eq } from "drizzle-orm";
import { ApiError } from "../lib/api-error"; import { ApiError } from "@/src/lib/api-error";
import { imageUploadS3, generateSignedUrlFromS3Url } from "../lib/s3-client"; import { imageUploadS3, generateSignedUrlFromS3Url } from "@/src/lib/s3-client";
import { deleteS3Image } from "../lib/delete-image"; import { deleteS3Image } from "@/src/lib/delete-image";
import { initializeAllStores } from '../stores/store-initializer'; import { initializeAllStores } from '@/src/stores/store-initializer';
/** /**
* Create a new product tag * Create a new product tag

View file

@ -1,12 +1,12 @@
import { Request, Response } from "express"; import { Request, Response } from "express";
import { db } from "../db/db_index"; import { db } from "@/src/db/db_index";
import { productInfo, units, specialDeals, productTags } from "../db/schema"; import { productInfo, units, specialDeals, productTags } from "@/src/db/schema";
import { eq, inArray } from "drizzle-orm"; import { eq, inArray } from "drizzle-orm";
import { ApiError } from "../lib/api-error"; import { ApiError } from "@/src/lib/api-error";
import { imageUploadS3, getOriginalUrlFromSignedUrl } from "../lib/s3-client"; import { imageUploadS3, getOriginalUrlFromSignedUrl } from "@/src/lib/s3-client";
import { deleteS3Image } from "../lib/delete-image"; import { deleteS3Image } from "@/src/lib/delete-image";
import type { SpecialDeal } from "../db/types"; import type { SpecialDeal } from "@/src/db/types";
import { initializeAllStores } from '../stores/store-initializer'; import { initializeAllStores } from '@/src/stores/store-initializer';
type CreateDeal = { type CreateDeal = {
quantity: number; quantity: number;

View file

@ -1,6 +1,6 @@
import { Router } from "express"; import { Router } from "express";
import { createProduct, updateProduct } from "./product.controller"; import { createProduct, updateProduct } from "@/src/apis/admin-apis/apis/product.controller"
import uploadHandler from '../lib/upload-handler'; import uploadHandler from '@/src/lib/upload-handler';
const router = Router(); const router = Router();

View file

@ -1,6 +1,6 @@
import { Router } from "express"; import { Router } from "express";
import { createTag, getAllTags, getTagById, updateTag, deleteTag } from "./product-tags.controller"; import { createTag, getAllTags, getTagById, updateTag, deleteTag } from "@/src/apis/admin-apis/apis/product-tags.controller"
import uploadHandler from '../lib/upload-handler'; import uploadHandler from '@/src/lib/upload-handler';
const router = Router(); const router = Router();

View file

@ -1,8 +1,8 @@
import { eq, gt, and, sql, inArray } from "drizzle-orm"; import { eq, gt, and, sql, inArray } from "drizzle-orm";
import { Request, Response } from "express"; import { Request, Response } from "express";
import { db } from "../db/db_index"; import { db } from "@/src/db/db_index"
import { productInfo, units, productSlots, deliverySlotInfo, productTags } from "../db/schema"; import { productInfo, units, productSlots, deliverySlotInfo, productTags } from "@/src/db/schema"
import { scaffoldAssetUrl } from "../lib/s3-client"; import { scaffoldAssetUrl } from "@/src/lib/s3-client"
/** /**
* Get next delivery date for a product * Get next delivery date for a product

View file

@ -1,5 +1,5 @@
import { Router } from "express"; import { Router } from "express";
import { getAllProductsSummary } from "./common-product.controller"; import { getAllProductsSummary } from "@/src/apis/common-apis/apis/common-product.controller"
const router = Router(); const router = Router();

View file

@ -1,5 +1,5 @@
import { Router } from "express"; import { Router } from "express";
import commonProductsRouter from "./common-product.router"; import commonProductsRouter from "@/src/apis/common-apis/apis/common-product.router"
const router = Router(); const router = Router();

View file

@ -1,7 +1,7 @@
import { drizzle } from "drizzle-orm/node-postgres" import { drizzle } from "drizzle-orm/node-postgres"
import { migrate } from "drizzle-orm/node-postgres/migrator" import { migrate } from "drizzle-orm/node-postgres/migrator"
import path from "path" import path from "path"
import * as schema from "./schema" import * as schema from "@/src/db/schema"
const db = drizzle({ connection: process.env.DATABASE_URL!, casing: "snake_case", schema: schema }) const db = drizzle({ connection: process.env.DATABASE_URL!, casing: "snake_case", schema: schema })
// const db = drizzle('postgresql://postgres:postgres@localhost:2345/pooler'); // const db = drizzle('postgresql://postgres:postgres@localhost:2345/pooler');

View file

@ -2,13 +2,13 @@
* This was a one time script to change the composition of the signed urls * This was a one time script to change the composition of the signed urls
*/ */
import { db } from './db_index'; import { db } from '@/src/db/db_index'
import { import {
userDetails, userDetails,
productInfo, productInfo,
productTagInfo, productTagInfo,
complaints complaints
} from './schema'; } from '@/src/db/schema';
import { eq, not, isNull } from 'drizzle-orm'; import { eq, not, isNull } from 'drizzle-orm';
const S3_DOMAIN = 'https://s3.sgp.io.cloud.ovh.net'; const S3_DOMAIN = 'https://s3.sgp.io.cloud.ovh.net';

View file

@ -1,8 +1,8 @@
import { db } from "./db_index"; import { db } from "@/src/db/db_index"
import { units, productInfo, deliverySlotInfo, productSlots, keyValStore, staffRoles, staffPermissions, staffRolePermissions } from "./schema"; import { units, productInfo, deliverySlotInfo, productSlots, keyValStore, staffRoles, staffPermissions, staffRolePermissions } from "@/src/db/schema"
import { eq } from "drizzle-orm"; import { eq } from "drizzle-orm";
import { minOrderValue, deliveryCharge } from '../lib/env-exporter'; import { minOrderValue, deliveryCharge } from '@/src/lib/env-exporter'
import { CONST_KEYS } from '../lib/const-keys'; import { CONST_KEYS } from '@/src/lib/const-keys'
export async function seed() { export async function seed() {
console.log("Seeding database..."); console.log("Seeding database...");

View file

@ -14,7 +14,7 @@ import type {
productCategories, productCategories,
cartItems, cartItems,
coupons, coupons,
} from "./schema"; } from "@/src/db/schema";
export type User = InferSelectModel<typeof users>; export type User = InferSelectModel<typeof users>;
export type Address = InferSelectModel<typeof addresses>; export type Address = InferSelectModel<typeof addresses>;

View file

@ -1,5 +1,5 @@
import * as cron from 'node-cron'; import * as cron from 'node-cron';
import { checkPendingPayments, checkRefundStatuses } from './payment-status-checker'; import { checkPendingPayments, checkRefundStatuses } from '@/src/jobs/payment-status-checker'
const runCombinedJob = async () => { const runCombinedJob = async () => {
const start = Date.now(); const start = Date.now();

View file

@ -1,8 +1,8 @@
import * as cron from 'node-cron'; import * as cron from 'node-cron';
import { db } from '../db/db_index'; import { db } from '@/src/db/db_index'
import { payments, orders, deliverySlotInfo, refunds } from '../db/schema'; import { payments, orders, deliverySlotInfo, refunds } from '@/src/db/schema'
import { eq, and, gt, isNotNull } from 'drizzle-orm'; import { eq, and, gt, isNotNull } from 'drizzle-orm';
import { RazorpayPaymentService } from '../lib/payments-utils'; import { RazorpayPaymentService } from '@/src/lib/payments-utils'
interface PendingPaymentRecord { interface PendingPaymentRecord {
payment: typeof payments.$inferSelect; payment: typeof payments.$inferSelect;

View file

@ -1,9 +1,9 @@
import * as cron from 'node-cron'; import * as cron from 'node-cron';
import { db } from '../db/db_index'; import { db } from '@/src/db/db_index'
import { productInfo, keyValStore } from '../db/schema'; import { productInfo, keyValStore } from '@/src/db/schema'
import { inArray, eq } from 'drizzle-orm'; import { inArray, eq } from 'drizzle-orm';
import { CONST_KEYS } from '../lib/const-keys'; import { CONST_KEYS } from '@/src/lib/const-keys'
import { computeConstants } from '../lib/const-store'; import { computeConstants } from '@/src/lib/const-store'
const MUTTON_ITEMS = [ const MUTTON_ITEMS = [

View file

@ -1,5 +1,5 @@
import axiosParent from "axios"; import axiosParent from "axios";
import { phonePeBaseUrl } from "./env-exporter"; import { phonePeBaseUrl } from "@/src/lib/env-exporter"
export const phonepeAxios = axiosParent.create({ export const phonepeAxios = axiosParent.create({
baseURL: phonePeBaseUrl, baseURL: phonePeBaseUrl,

View file

@ -1,7 +1,7 @@
import { db } from '../db/db_index'; import { db } from '@/src/db/db_index'
import { keyValStore } from '../db/schema'; import { keyValStore } from '@/src/db/schema'
import redisClient from './redis-client'; import redisClient from '@/src/lib/redis-client'
import { CONST_KEYS, CONST_KEYS_ARRAY, type ConstKey } from './const-keys'; import { CONST_KEYS, CONST_KEYS_ARRAY, type ConstKey } from '@/src/lib/const-keys'
const CONST_REDIS_PREFIX = 'const:'; const CONST_REDIS_PREFIX = 'const:';

View file

@ -1,7 +1,7 @@
import { eq } from "drizzle-orm"; import { eq } from "drizzle-orm";
import { db } from "../db/db_index"; import { db } from "@/src/db/db_index"
import { deleteImageUtil, getOriginalUrlFromSignedUrl } from "./s3-client"; import { deleteImageUtil, getOriginalUrlFromSignedUrl } from "@/src/lib/s3-client"
import { s3Url } from "./env-exporter"; import { s3Url } from "@/src/lib/env-exporter"
function extractS3Key(url: string): string | null { function extractS3Key(url: string): string | null {
try { try {

View file

@ -1,5 +1,5 @@
import { db } from '../db/db_index'; import { db } from '@/src/db/db_index'
import { orders, orderItems, orderStatus, payments, refunds, couponUsage, complaints } from '../db/schema'; import { orders, orderItems, orderStatus, payments, refunds, couponUsage, complaints } from '@/src/db/schema'
import { eq, inArray } from 'drizzle-orm'; import { eq, inArray } from 'drizzle-orm';
/** /**

View file

@ -1,4 +1,4 @@
import redisClient from './redis-client'; import redisClient from '@/src/lib/redis-client'
export async function enqueue(queueName: string, eventData: any): Promise<boolean> { export async function enqueue(queueName: string, eventData: any): Promise<boolean> {
try { try {

View file

@ -1,6 +1,6 @@
import { Expo } from "expo-server-sdk"; import { Expo } from "expo-server-sdk";
import { title } from "process"; import { title } from "process";
import { expoAccessToken } from "./env-exporter"; import { expoAccessToken } from "@/src/lib/env-exporter"
const expo = new Expo({ const expo = new Expo({
accessToken: expoAccessToken, accessToken: expoAccessToken,

View file

@ -1,8 +1,8 @@
import './notif-job'; import '@/src/lib/notif-job'
import { initializeAllStores } from '../stores/store-initializer'; import { initializeAllStores } from '@/src/stores/store-initializer'
import { initializeUserNegativityStore } from '../stores/user-negativity-store'; import { initializeUserNegativityStore } from '@/src/stores/user-negativity-store'
import { startOrderHandler, startCancellationHandler, publishOrder } from './post-order-handler'; import { startOrderHandler, startCancellationHandler, publishOrder } from '@/src/lib/post-order-handler'
import { deleteOrders } from './delete-orders'; import { deleteOrders } from '@/src/lib/delete-orders'
/** /**
* Initialize all application services * Initialize all application services

View file

@ -1,8 +1,8 @@
import { Queue, Worker } from 'bullmq'; import { Queue, Worker } from 'bullmq';
import { Expo } from 'expo-server-sdk'; import { Expo } from 'expo-server-sdk';
import { redisUrl } from './env-exporter'; import { redisUrl } from '@/src/lib/env-exporter'
import { db } from '../db/db_index'; import { db } from '@/src/db/db_index'
import { generateSignedUrlFromS3Url } from './s3-client'; import { generateSignedUrlFromS3Url } from '@/src/lib/s3-client'
import { import {
NOTIFS_QUEUE, NOTIFS_QUEUE,
ORDER_PLACED_MESSAGE, ORDER_PLACED_MESSAGE,
@ -12,7 +12,7 @@ import {
ORDER_DELIVERED_MESSAGE, ORDER_DELIVERED_MESSAGE,
ORDER_CANCELLED_MESSAGE, ORDER_CANCELLED_MESSAGE,
REFUND_INITIATED_MESSAGE REFUND_INITIATED_MESSAGE
} from './const-strings'; } from '@/src/lib/const-strings';
export const notificationQueue = new Queue(NOTIFS_QUEUE, { export const notificationQueue = new Queue(NOTIFS_QUEUE, {
connection: { url: redisUrl }, connection: { url: redisUrl },

View file

@ -1,6 +1,6 @@
import { db } from "../db/db_index"; import { db } from "@/src/db/db_index"
import { sendPushNotificationsMany } from "./expo-service"; import { sendPushNotificationsMany } from "@/src/lib/expo-service"
// import { usersTable, notifCredsTable, notificationTable } from "../db/schema"; // import { usersTable, notifCredsTable, notificationTable } from "@/src/db/schema";
import { eq, inArray } from "drizzle-orm"; import { eq, inArray } from "drizzle-orm";
// Core notification dispatch methods (renamed for clarity) // Core notification dispatch methods (renamed for clarity)

View file

@ -1,5 +1,5 @@
import { ApiError } from './api-error'; import { ApiError } from '@/src/lib/api-error'
import { otpSenderAuthToken } from './env-exporter'; import { otpSenderAuthToken } from '@/src/lib/env-exporter'
const otpStore = new Map<string, string>(); const otpStore = new Map<string, string>();

View file

@ -1,7 +1,7 @@
import Razorpay from "razorpay"; import Razorpay from "razorpay";
import { razorpayId, razorpaySecret } from "./env-exporter"; import { razorpayId, razorpaySecret } from "@/src/lib/env-exporter"
import { db } from "../db/db_index"; import { db } from "@/src/db/db_index"
import { payments } from "../db/schema"; import { payments } from "@/src/db/schema"
type Tx = Parameters<Parameters<typeof db.transaction>[0]>[0]; type Tx = Parameters<Parameters<typeof db.transaction>[0]>[0];

View file

@ -1,7 +1,7 @@
import { db } from '../db/db_index'; import { db } from '@/src/db/db_index'
import { orders, orderStatus } from '../db/schema'; import { orders, orderStatus } from '@/src/db/schema'
import redisClient from './redis-client'; import redisClient from '@/src/lib/redis-client'
import { sendTelegramMessage } from './telegram-service'; import { sendTelegramMessage } from '@/src/lib/telegram-service'
import { inArray, eq } from 'drizzle-orm'; import { inArray, eq } from 'drizzle-orm';
const ORDER_CHANNEL = 'orders:placed'; const ORDER_CHANNEL = 'orders:placed';

View file

@ -1,5 +1,5 @@
import { createClient, RedisClientType } from 'redis'; import { createClient, RedisClientType } from 'redis';
import { redisUrl } from './env-exporter'; import { redisUrl } from '@/src/lib/env-exporter'
class RedisClient { class RedisClient {
private client: RedisClientType; private client: RedisClientType;

View file

@ -1,4 +1,4 @@
import { db } from "../db/db_index"; import { db } from "@/src/db/db_index"
/** /**
* Constants for role names to avoid hardcoding and typos * Constants for role names to avoid hardcoding and typos

View file

@ -1,10 +1,10 @@
// import { s3A, awsBucketName, awsRegion, awsSecretAccessKey } from "../lib/env-exporter" // import { s3A, awsBucketName, awsRegion, awsSecretAccessKey } from "@/src/lib/env-exporter"
import { DeleteObjectCommand, DeleteObjectsCommand, PutObjectCommand, S3Client, GetObjectCommand } from "@aws-sdk/client-s3" import { DeleteObjectCommand, DeleteObjectsCommand, PutObjectCommand, S3Client, GetObjectCommand } from "@aws-sdk/client-s3"
import { getSignedUrl } from "@aws-sdk/s3-request-presigner" import { getSignedUrl } from "@aws-sdk/s3-request-presigner"
import signedUrlCache from "./signed-url-cache" import signedUrlCache from "@/src/lib/signed-url-cache"
import { s3AccessKeyId, s3Region, s3Url, s3SecretAccessKey, s3BucketName, assetsDomain } from "./env-exporter"; import { s3AccessKeyId, s3Region, s3Url, s3SecretAccessKey, s3BucketName, assetsDomain } from "@/src/lib/env-exporter"
import { db } from "../db/db_index"; // Adjust path if needed import { db } from "@/src/db/db_index"; // Adjust path if needed
import { uploadUrlStatus } from "../db/schema"; import { uploadUrlStatus } from "@/src/db/schema"
import { and, eq } from 'drizzle-orm'; import { and, eq } from 'drizzle-orm';
const s3Client = new S3Client({ const s3Client = new S3Client({

View file

@ -1,5 +1,5 @@
import axios from 'axios'; import axios from 'axios';
import { isDevMode, telegramBotToken, telegramChatIds } from './env-exporter'; import { isDevMode, telegramBotToken, telegramChatIds } from '@/src/lib/env-exporter'
const BOT_TOKEN = telegramBotToken; const BOT_TOKEN = telegramBotToken;
const CHAT_IDS = telegramChatIds; const CHAT_IDS = telegramChatIds;

View file

@ -1,11 +1,11 @@
import { Router, Request, Response, NextFunction } from "express"; import { Router, Request, Response, NextFunction } from "express";
import avRouter from "./admin-apis/av-router"; import avRouter from "@/src/apis/admin-apis/apis/av-router"
import { ApiError } from "./lib/api-error"; import { ApiError } from "@/src/lib/api-error"
import v1Router from "./v1-router"; import v1Router from "@/src/v1-router"
import testController from "./test-controller"; import testController from "@/src/test-controller"
import { authenticateUser } from "./middleware/auth.middleware"; import { authenticateUser } from "@/src/middleware/auth.middleware"
import { raiseComplaint } from "./uv-apis/user-rest.controller"; import { raiseComplaint } from "@/src/uv-apis/user-rest.controller"
import uploadHandler from "./lib/upload-handler"; import uploadHandler from "@/src/lib/upload-handler"
const router = Router(); const router = Router();

View file

@ -1,9 +1,9 @@
import { Request, Response, NextFunction } from 'express'; import { Request, Response, NextFunction } from 'express';
import jwt from 'jsonwebtoken'; import jwt from 'jsonwebtoken';
import { db } from '../db/db_index'; import { db } from '@/src/db/db_index'
import { staffUsers, userDetails } from '../db/schema'; import { staffUsers, userDetails } from '@/src/db/schema'
import { eq } from 'drizzle-orm'; import { eq } from 'drizzle-orm';
import { ApiError } from '../lib/api-error'; import { ApiError } from '@/src/lib/api-error'
interface AuthenticatedRequest extends Request { interface AuthenticatedRequest extends Request {
user?: { user?: {

View file

@ -1,6 +1,6 @@
import { Request, Response, NextFunction } from 'express'; import { Request, Response, NextFunction } from 'express';
import jwt from 'jsonwebtoken'; import jwt from 'jsonwebtoken';
import { ApiError } from '../lib/api-error'; import { ApiError } from '@/src/lib/api-error'
// Extend the Request interface to include user property // Extend the Request interface to include user property
declare global { declare global {

View file

@ -1,9 +1,9 @@
import { Request, Response, NextFunction } from 'express'; import { Request, Response, NextFunction } from 'express';
import jwt from 'jsonwebtoken'; import jwt from 'jsonwebtoken';
import { db } from '../db/db_index'; import { db } from '@/src/db/db_index'
import { staffUsers } from '../db/schema'; import { staffUsers } from '@/src/db/schema'
import { eq } from 'drizzle-orm'; import { eq } from 'drizzle-orm';
import { ApiError } from '../lib/api-error'; import { ApiError } from '@/src/lib/api-error'
// Extend Request interface to include staffUser // Extend Request interface to include staffUser
declare global { declare global {

View file

@ -1,4 +1,4 @@
import { db } from '../../db/db_index' import { db } from '@/src/db/db_index'
import { import {
orders, orders,
orderItems, orderItems,
@ -13,7 +13,7 @@ import {
refunds, refunds,
units, units,
userDetails, userDetails,
} from '../../db/schema' } from '@/src/db/schema'
import { eq, and, inArray, desc, gte } from 'drizzle-orm' import { eq, and, inArray, desc, gte } from 'drizzle-orm'
// ============ User/Auth Queries ============ // ============ User/Auth Queries ============

View file

@ -1,5 +1,5 @@
import { db } from '../../db/db_index' import { db } from '@/src/db/db_index'
import { productInfo, units, productSlots, deliverySlotInfo, specialDeals, storeInfo, productReviews, users } from '../../db/schema' import { productInfo, units, productSlots, deliverySlotInfo, specialDeals, storeInfo, productReviews, users } from '@/src/db/schema'
import { eq, and, gt, sql, desc } from 'drizzle-orm' import { eq, and, gt, sql, desc } from 'drizzle-orm'
/** /**

View file

@ -1,9 +1,13 @@
// import redisClient from './redis-client'; // import redisClient from '@/src/stores/redis-client';
import redisClient from 'src/lib/redis-client'; import redisClient from '@/src/lib/redis-client';
import { db } from '../db/db_index'; import { db } from '@/src/db/db_index'
import { homeBanners } from '../db/schema'; import { homeBanners } from '@/src/db/schema'
import { isNotNull, asc } from 'drizzle-orm'; import { isNotNull, asc } from 'drizzle-orm';
import { scaffoldAssetUrl } from 'src/lib/s3-client'; import { scaffoldAssetUrl } from '@/src/lib/s3-client';
// Banner Type (matches getBanners return) // Banner Type (matches getBanners return)
interface Banner { interface Banner {

View file

@ -1,9 +1,9 @@
// import redisClient from './redis-client'; // import redisClient from '@/src/stores/redis-client';
import redisClient from 'src/lib/redis-client'; import redisClient from '@/src/lib/redis-client';
import { db } from '../db/db_index'; import { db } from '@/src/db/db_index'
import { productInfo, units, productSlots, deliverySlotInfo, specialDeals, storeInfo, productTags, productTagInfo } from '../db/schema'; import { productInfo, units, productSlots, deliverySlotInfo, specialDeals, storeInfo, productTags, productTagInfo } from '@/src/db/schema'
import { eq, and, gt, sql } from 'drizzle-orm'; import { eq, and, gt, sql } from 'drizzle-orm';
import { generateSignedUrlsFromS3Urls, scaffoldAssetUrl } from 'src/lib/s3-client'; import { generateSignedUrlsFromS3Urls, scaffoldAssetUrl } from '@/src/lib/s3-client';
// Uniform Product Type (matches getProductDetails return) // Uniform Product Type (matches getProductDetails return)
interface Product { interface Product {

View file

@ -1,9 +1,9 @@
// import redisClient from './redis-client'; // import redisClient from '@/src/stores/redis-client';
import redisClient from 'src/lib/redis-client'; import redisClient from '@/src/lib/redis-client';
import { db } from '../db/db_index'; import { db } from '@/src/db/db_index'
import { productTagInfo, productTags } from '../db/schema'; import { productTagInfo, productTags } from '@/src/db/schema'
import { eq, inArray } from 'drizzle-orm'; import { eq, inArray } from 'drizzle-orm';
import { generateSignedUrlFromS3Url } from 'src/lib/s3-client'; import { generateSignedUrlFromS3Url } from '@/src/lib/s3-client';
// Tag Type (matches getDashboardTags return) // Tag Type (matches getDashboardTags return)
interface Tag { interface Tag {

View file

@ -1,8 +1,8 @@
import redisClient from 'src/lib/redis-client'; import redisClient from '@/src/lib/redis-client';
import { db } from '../db/db_index'; import { db } from '@/src/db/db_index'
import { deliverySlotInfo, productSlots, productInfo, units } from '../db/schema'; import { deliverySlotInfo, productSlots, productInfo, units } from '@/src/db/schema'
import { eq, and, gt, asc } from 'drizzle-orm'; import { eq, and, gt, asc } from 'drizzle-orm';
import { generateSignedUrlsFromS3Urls, scaffoldAssetUrl } from 'src/lib/s3-client'; import { generateSignedUrlsFromS3Urls, scaffoldAssetUrl } from '@/src/lib/s3-client';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
// Define the structure for slot with products // Define the structure for slot with products

View file

@ -1,9 +1,9 @@
import roleManager from '../lib/roles-manager'; import roleManager from '@/src/lib/roles-manager'
import { computeConstants } from '../lib/const-store'; import { computeConstants } from '@/src/lib/const-store'
import { initializeProducts } from './product-store'; import { initializeProducts } from '@/src/stores/product-store'
import { initializeProductTagStore } from './product-tag-store'; import { initializeProductTagStore } from '@/src/stores/product-tag-store'
import { initializeSlotStore } from './slot-store'; import { initializeSlotStore } from '@/src/stores/slot-store'
import { initializeBannerStore } from './banner-store'; import { initializeBannerStore } from '@/src/stores/banner-store'
/** /**
* Initialize all application stores * Initialize all application stores

View file

@ -1,6 +1,6 @@
import redisClient from 'src/lib/redis-client'; import redisClient from '@/src/lib/redis-client';
import { db } from '../db/db_index'; import { db } from '@/src/db/db_index'
import { userIncidents } from '../db/schema'; import { userIncidents } from '@/src/db/schema'
import { eq, sum } from 'drizzle-orm'; import { eq, sum } from 'drizzle-orm';
export async function initializeUserNegativityStore(): Promise<void> { export async function initializeUserNegativityStore(): Promise<void> {

View file

@ -1,34 +0,0 @@
import { router } from '../trpc-index';
import { complaintRouter } from './complaint';
import { couponRouter } from './coupon';
import { cancelledOrdersRouter } from './cancelled-orders';
import { orderRouter } from './order';
import { vendorSnippetsRouter } from './vendor-snippets';
import { slotsRouter } from './slots';
import { productRouter } from './product';
import { staffUserRouter } from './staff-user';
import { storeRouter } from './store';
import { adminPaymentsRouter } from './payments';
import addressRouter from './address';
import { bannerRouter } from './banner';
import { userRouter } from './user';
import { constRouter } from './const';
export const adminRouter = router({
complaint: complaintRouter,
coupon: couponRouter,
cancelledOrders: cancelledOrdersRouter,
order: orderRouter,
vendorSnippets: vendorSnippetsRouter,
slots: slotsRouter,
product: productRouter,
staffUser: staffUserRouter,
store: storeRouter,
payments: adminPaymentsRouter,
address: addressRouter,
banner: bannerRouter,
user: userRouter,
const: constRouter,
});
export type AdminRouter = typeof adminRouter;

View file

@ -1,8 +1,8 @@
import { z } from 'zod'; import { z } from 'zod';
import { addressZones, addressAreas } from '../../db/schema'; import { addressZones, addressAreas } from '@/src/db/schema'
import { eq, desc } from 'drizzle-orm'; import { eq, desc } from 'drizzle-orm';
import { db } from '../../db/db_index'; import { db } from '@/src/db/db_index'
import { router,protectedProcedure } from '../trpc-index'; import { router,protectedProcedure } from '@/src/trpc/trpc-index'
const addressRouter = router({ const addressRouter = router({
getZones: protectedProcedure.query(async () => { getZones: protectedProcedure.query(async () => {

View file

@ -0,0 +1,35 @@
// import { router } from '@/src/trpc/trpc-index';
import { router } from '@/src/trpc/trpc-index'
import { complaintRouter } from '@/src/trpc/apis/admin-apis/apis/complaint'
import { couponRouter } from '@/src/trpc/apis/admin-apis/apis/coupon'
import { cancelledOrdersRouter } from '@/src/trpc/apis/admin-apis/apis/cancelled-orders'
import { orderRouter } from '@/src/trpc/apis/admin-apis/apis/order'
import { vendorSnippetsRouter } from '@/src/trpc/apis/admin-apis/apis/vendor-snippets'
import { slotsRouter } from '@/src/trpc/apis/admin-apis/apis/slots'
import { productRouter } from '@/src/trpc/apis/admin-apis/apis/product'
import { staffUserRouter } from '@/src/trpc/apis/admin-apis/apis/staff-user'
import { storeRouter } from '@/src/trpc/apis/admin-apis/apis/store'
import { adminPaymentsRouter } from '@/src/trpc/apis/admin-apis/apis/payments'
import addressRouter from '@/src/trpc/apis/admin-apis/apis/address'
import { bannerRouter } from '@/src/trpc/apis/admin-apis/apis/banner'
import { userRouter } from '@/src/trpc/apis/admin-apis/apis/user'
import { constRouter } from '@/src/trpc/apis/admin-apis/apis/const'
export const adminRouter = router({
complaint: complaintRouter,
coupon: couponRouter,
cancelledOrders: cancelledOrdersRouter,
order: orderRouter,
vendorSnippets: vendorSnippetsRouter,
slots: slotsRouter,
product: productRouter,
staffUser: staffUserRouter,
store: storeRouter,
payments: adminPaymentsRouter,
address: addressRouter,
banner: bannerRouter,
user: userRouter,
const: constRouter,
});
export type AdminRouter = typeof adminRouter;

View file

@ -1,11 +1,11 @@
import { z } from 'zod'; import { z } from 'zod';
import { db } from '../../db/db_index'; import { db } from '@/src/db/db_index'
import { homeBanners } from '../../db/schema'; import { homeBanners } from '@/src/db/schema'
import { eq, and, desc, sql } from 'drizzle-orm'; import { eq, and, desc, sql } from 'drizzle-orm';
import { protectedProcedure, router } from '../trpc-index'; import { protectedProcedure, router } from '@/src/trpc/trpc-index'
import { extractKeyFromPresignedUrl, generateSignedUrlFromS3Url } from '../../lib/s3-client'; import { extractKeyFromPresignedUrl, generateSignedUrlFromS3Url } from '@/src/lib/s3-client'
import { ApiError } from 'src/lib/api-error'; import { ApiError } from '@/src/lib/api-error';
import { initializeAllStores } from '../../stores/store-initializer'; import { initializeAllStores } from '@/src/stores/store-initializer'
export const bannerRouter = router({ export const bannerRouter = router({
// Get all banners // Get all banners

View file

@ -1,7 +1,7 @@
import { router, protectedProcedure } from '../trpc-index'; import { router, protectedProcedure } from '@/src/trpc/trpc-index'
import { z } from 'zod'; import { z } from 'zod';
import { db } from '../../db/db_index'; import { db } from '@/src/db/db_index'
import { orders, orderStatus, users, addresses, orderItems, productInfo, units, refunds } from '../../db/schema'; import { orders, orderStatus, users, addresses, orderItems, productInfo, units, refunds } from '@/src/db/schema'
import { eq, desc } from 'drizzle-orm'; import { eq, desc } from 'drizzle-orm';
const updateCancellationReviewSchema = z.object({ const updateCancellationReviewSchema = z.object({

View file

@ -1,9 +1,9 @@
import { router, protectedProcedure } from '../trpc-index'; import { router, protectedProcedure } from '@/src/trpc/trpc-index'
import { z } from 'zod'; import { z } from 'zod';
import { db } from '../../db/db_index'; import { db } from '@/src/db/db_index'
import { complaints, users } from '../../db/schema'; import { complaints, users } from '@/src/db/schema'
import { eq, desc, lt, and } from 'drizzle-orm'; import { eq, desc, lt, and } from 'drizzle-orm';
import { generateSignedUrlsFromS3Urls } from '../../lib/s3-client'; import { generateSignedUrlsFromS3Urls } from '@/src/lib/s3-client'
export const complaintRouter = router({ export const complaintRouter = router({
getAll: protectedProcedure getAll: protectedProcedure

View file

@ -1,9 +1,9 @@
import { router, protectedProcedure } from '../trpc-index'; import { router, protectedProcedure } from '@/src/trpc/trpc-index'
import { z } from 'zod'; import { z } from 'zod';
import { db } from '../../db/db_index'; import { db } from '@/src/db/db_index'
import { keyValStore } from '../../db/schema'; import { keyValStore } from '@/src/db/schema'
import { computeConstants } from '../../lib/const-store'; import { computeConstants } from '@/src/lib/const-store'
import { CONST_KEYS } from '../../lib/const-keys'; import { CONST_KEYS } from '@/src/lib/const-keys'
export const constRouter = router({ export const constRouter = router({
getConstants: protectedProcedure getConstants: protectedProcedure

View file

@ -1,7 +1,7 @@
import { router, protectedProcedure } from '../trpc-index'; import { router, protectedProcedure } from '@/src/trpc/trpc-index'
import { z } from 'zod'; import { z } from 'zod';
import { db } from '../../db/db_index'; import { db } from '@/src/db/db_index'
import { coupons, users, staffUsers, orders, couponApplicableUsers, couponApplicableProducts, orderStatus, reservedCoupons } from '../../db/schema'; import { coupons, users, staffUsers, orders, couponApplicableUsers, couponApplicableProducts, orderStatus, reservedCoupons } from '@/src/db/schema'
import { eq, and, like, or, inArray, lt } from 'drizzle-orm'; import { eq, and, like, or, inArray, lt } from 'drizzle-orm';
import dayjs from 'dayjs'; import dayjs from 'dayjs';

View file

@ -1,6 +1,6 @@
import { router, protectedProcedure } from "../trpc-index"; import { router, protectedProcedure } from "@/src/trpc/trpc-index"
import { z } from "zod"; import { z } from "zod";
import { db } from "../../db/db_index"; import { db } from "@/src/db/db_index"
import { import {
orders, orders,
orderItems, orderItems,
@ -10,17 +10,17 @@ import {
refunds, refunds,
coupons, coupons,
couponUsage, couponUsage,
} from "../../db/schema"; } from "@/src/db/schema";
import { eq, and, gte, lt, desc, SQL, inArray } from "drizzle-orm"; import { eq, and, gte, lt, desc, SQL, inArray } from "drizzle-orm";
import dayjs from "dayjs"; import dayjs from "dayjs";
import utc from "dayjs/plugin/utc"; import utc from "dayjs/plugin/utc";
import { ApiError } from "../../lib/api-error"; import { ApiError } from "@/src/lib/api-error"
import { import {
sendOrderPackagedNotification, sendOrderPackagedNotification,
sendOrderDeliveredNotification, sendOrderDeliveredNotification,
} from "../../lib/notif-job"; } from "@/src/lib/notif-job";
import { publishCancellation } from "../../lib/post-order-handler"; import { publishCancellation } from "@/src/lib/post-order-handler"
import { getMultipleUserNegativityScores } from "../../stores/user-negativity-store"; import { getMultipleUserNegativityScores } from "@/src/stores/user-negativity-store"
const updateOrderNotesSchema = z.object({ const updateOrderNotesSchema = z.object({
orderId: z.number(), orderId: z.number(),

View file

@ -1,15 +1,15 @@
import { router, protectedProcedure } from "../trpc-index"; import { router, protectedProcedure } from "@/src/trpc/trpc-index"
import { z } from "zod"; import { z } from "zod";
import { db } from "../../db/db_index"; import { db } from "@/src/db/db_index"
import { import {
orders, orders,
orderStatus, orderStatus,
payments, payments,
refunds, refunds,
} from "../../db/schema"; } from "@/src/db/schema";
import { and, eq } from "drizzle-orm"; import { and, eq } from "drizzle-orm";
import { ApiError } from "../../lib/api-error"; import { ApiError } from "@/src/lib/api-error"
import { RazorpayPaymentService } from "../../lib/payments-utils"; import { RazorpayPaymentService } from "@/src/lib/payments-utils"
const initiateRefundSchema = z const initiateRefundSchema = z
.object({ .object({

View file

@ -1,13 +1,13 @@
import { router, protectedProcedure } from '../trpc-index'; import { router, protectedProcedure } from '@/src/trpc/trpc-index'
import { z } from 'zod'; import { z } from 'zod';
import { db } from '../../db/db_index'; import { db } from '@/src/db/db_index'
import { productInfo, units, specialDeals, productSlots, productTags, productReviews, users, productGroupInfo, productGroupMembership } from '../../db/schema'; import { productInfo, units, specialDeals, productSlots, productTags, productReviews, users, productGroupInfo, productGroupMembership } from '@/src/db/schema'
import { eq, and, inArray, desc, sql } from 'drizzle-orm'; import { eq, and, inArray, desc, sql } from 'drizzle-orm';
import { ApiError } from '../../lib/api-error'; import { ApiError } from '@/src/lib/api-error'
import { imageUploadS3, generateSignedUrlsFromS3Urls, getOriginalUrlFromSignedUrl, claimUploadUrl } from '../../lib/s3-client'; import { imageUploadS3, generateSignedUrlsFromS3Urls, getOriginalUrlFromSignedUrl, claimUploadUrl } from '@/src/lib/s3-client'
import { deleteS3Image } from '../../lib/delete-image'; import { deleteS3Image } from '@/src/lib/delete-image'
import type { SpecialDeal } from '../../db/types'; import type { SpecialDeal } from '@/src/db/types'
import { initializeAllStores } from '../../stores/store-initializer'; import { initializeAllStores } from '@/src/stores/store-initializer'
type CreateDeal = { type CreateDeal = {
quantity: number; quantity: number;
@ -335,7 +335,7 @@ export const productRouter = router({
// Claim upload URLs // Claim upload URLs
if (uploadUrls && uploadUrls.length > 0) { if (uploadUrls && uploadUrls.length > 0) {
// const { claimUploadUrl } = await import('../../lib/s3-client'); // const { claimUploadUrl } = await import('@/src/lib/s3-client');
await Promise.all(uploadUrls.map(url => claimUploadUrl(url))); await Promise.all(uploadUrls.map(url => claimUploadUrl(url)));
} }

View file

@ -1,14 +1,14 @@
import { router, protectedProcedure } from "../trpc-index"; import { router, protectedProcedure } from "@/src/trpc/trpc-index"
import { TRPCError } from "@trpc/server"; import { TRPCError } from "@trpc/server";
import { z } from "zod"; import { z } from "zod";
import { db } from "../../db/db_index"; import { db } from "@/src/db/db_index"
import { deliverySlotInfo, productSlots, productInfo, vendorSnippets, productGroupInfo } from "../../db/schema"; import { deliverySlotInfo, productSlots, productInfo, vendorSnippets, productGroupInfo } from "@/src/db/schema"
import { eq, inArray, and, desc } from "drizzle-orm"; import { eq, inArray, and, desc } from "drizzle-orm";
import { ApiError } from "../../lib/api-error"; import { ApiError } from "@/src/lib/api-error"
import { appUrl } from "../../lib/env-exporter"; import { appUrl } from "@/src/lib/env-exporter"
import redisClient from "../../lib/redis-client"; import redisClient from "@/src/lib/redis-client"
import { getSlotSequenceKey } from "../../lib/redisKeyGetters"; import { getSlotSequenceKey } from "@/src/lib/redisKeyGetters"
import { initializeAllStores } from '../../stores/store-initializer'; import { initializeAllStores } from '@/src/stores/store-initializer'
interface CachedDeliverySequence { interface CachedDeliverySequence {
[userId: string]: number[]; [userId: string]: number[];

View file

@ -1,11 +1,11 @@
import { router, publicProcedure, protectedProcedure } from '../trpc-index'; import { router, publicProcedure, protectedProcedure } from '@/src/trpc/trpc-index'
import { z } from 'zod'; import { z } from 'zod';
import { db } from '../../db/db_index'; import { db } from '@/src/db/db_index'
import { staffUsers, staffRoles, users, userDetails, orders } from '../../db/schema'; import { staffUsers, staffRoles, users, userDetails, orders } from '@/src/db/schema'
import { eq, or, ilike, and, lt, desc } from 'drizzle-orm'; import { eq, or, ilike, and, lt, desc } from 'drizzle-orm';
import bcrypt from 'bcryptjs'; import bcrypt from 'bcryptjs';
import jwt from 'jsonwebtoken'; import jwt from 'jsonwebtoken';
import { ApiError } from '../../lib/api-error'; import { ApiError } from '@/src/lib/api-error'
export const staffUserRouter = router({ export const staffUserRouter = router({
login: publicProcedure login: publicProcedure

View file

@ -1,12 +1,12 @@
import { router, protectedProcedure } from '../trpc-index'; import { router, protectedProcedure } from '@/src/trpc/trpc-index'
import { z } from 'zod'; import { z } from 'zod';
import { db } from '../../db/db_index'; import { db } from '@/src/db/db_index'
import { storeInfo, productInfo } from '../../db/schema'; import { storeInfo, productInfo } from '@/src/db/schema'
import { eq, inArray } from 'drizzle-orm'; import { eq, inArray } from 'drizzle-orm';
import { ApiError } from '../../lib/api-error'; import { ApiError } from '@/src/lib/api-error'
import { extractKeyFromPresignedUrl, deleteImageUtil, generateSignedUrlFromS3Url } from '../../lib/s3-client'; import { extractKeyFromPresignedUrl, deleteImageUtil, generateSignedUrlFromS3Url } from '@/src/lib/s3-client'
import { getSignedUrl } from '@aws-sdk/s3-request-presigner'; import { getSignedUrl } from '@aws-sdk/s3-request-presigner';
import { initializeAllStores } from '../../stores/store-initializer'; import { initializeAllStores } from '@/src/stores/store-initializer'
export const storeRouter = router({ export const storeRouter = router({
getStores: protectedProcedure getStores: protectedProcedure

View file

@ -1,11 +1,11 @@
import { protectedProcedure } from '../trpc-index'; import { protectedProcedure } from '@/src/trpc/trpc-index';
import { z } from 'zod'; import { z } from 'zod';
import { db } from '../../db/db_index'; import { db } from '@/src/db/db_index';
import { users, complaints, orders, orderItems, notifCreds, unloggedUserTokens, userDetails, userIncidents } from '../../db/schema'; import { users, complaints, orders, orderItems, notifCreds, unloggedUserTokens, userDetails, userIncidents } from '@/src/db/schema';
import { eq, sql, desc, asc, count, max, inArray } from 'drizzle-orm'; import { eq, sql, desc, asc, count, max, inArray } from 'drizzle-orm';
import { ApiError } from '../../lib/api-error'; import { ApiError } from '@/src/lib/api-error';
import { notificationQueue } from '../../lib/notif-job'; import { notificationQueue } from '@/src/lib/notif-job';
import { recomputeUserNegativityScore } from '../../stores/user-negativity-store'; import { recomputeUserNegativityScore } from '@/src/stores/user-negativity-store';
async function createUserByMobile(mobile: string): Promise<typeof users.$inferSelect> { async function createUserByMobile(mobile: string): Promise<typeof users.$inferSelect> {
// Clean mobile number (remove non-digits) // Clean mobile number (remove non-digits)
@ -212,7 +212,7 @@ export const userRouter = {
let orderStatuses: { orderId: number; isDelivered: boolean; isCancelled: boolean }[] = []; let orderStatuses: { orderId: number; isDelivered: boolean; isCancelled: boolean }[] = [];
if (orderIds.length > 0) { if (orderIds.length > 0) {
const { orderStatus } = await import('../../db/schema'); const { orderStatus } = await import('@/src/db/schema');
orderStatuses = await db orderStatuses = await db
.select({ .select({
orderId: orderStatus.orderId, orderId: orderStatus.orderId,

View file

@ -1,10 +1,10 @@
import { router, publicProcedure, protectedProcedure } from '../trpc-index'; import { router, publicProcedure, protectedProcedure } from '@/src/trpc/trpc-index'
import { z } from 'zod'; import { z } from 'zod';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import { db } from '../../db/db_index'; import { db } from '@/src/db/db_index'
import { vendorSnippets, deliverySlotInfo, productInfo, orders, orderItems, users, orderStatus } from '../../db/schema'; import { vendorSnippets, deliverySlotInfo, productInfo, orders, orderItems, users, orderStatus } from '@/src/db/schema'
import { eq, and, inArray, isNotNull, gt, sql, asc, ne } from 'drizzle-orm'; import { eq, and, inArray, isNotNull, gt, sql, asc, ne } from 'drizzle-orm';
import { appUrl } from '../../lib/env-exporter'; import { appUrl } from '@/src/lib/env-exporter'
const createSnippetSchema = z.object({ const createSnippetSchema = z.object({
snippetCode: z.string().min(1, "Snippet code is required"), snippetCode: z.string().min(1, "Snippet code is required"),

View file

@ -1,14 +1,14 @@
import { router, publicProcedure, protectedProcedure } from '../trpc-index'; import { router, publicProcedure, protectedProcedure } from '@/src/trpc/trpc-index'
import { commonRouter } from './common'; import { commonRouter } from '@/src/trpc/apis/common-apis/common'
import { db } from '../../db/db_index'; import { db } from '@/src/db/db_index'
import { keyValStore, productInfo, storeInfo } from '../../db/schema'; import { keyValStore, productInfo, storeInfo } from '@/src/db/schema'
import * as turf from '@turf/turf'; import * as turf from '@turf/turf';
import { z } from 'zod'; import { z } from 'zod';
import { mbnrGeoJson } from '../../lib/mbnr-geojson'; import { mbnrGeoJson } from '@/src/lib/mbnr-geojson'
import { generateUploadUrl } from '../../lib/s3-client'; import { generateUploadUrl } from '@/src/lib/s3-client'
import { ApiError } from '../../lib/api-error'; import { ApiError } from '@/src/lib/api-error'
import { getAllConstValues } from '../../lib/const-store'; import { getAllConstValues } from '@/src/lib/const-store'
import { CONST_KEYS } from '../../lib/const-keys'; import { CONST_KEYS } from '@/src/lib/const-keys'
const polygon = turf.polygon(mbnrGeoJson.features[0].geometry.coordinates); const polygon = turf.polygon(mbnrGeoJson.features[0].geometry.coordinates);

View file

@ -1,11 +1,11 @@
import { router, publicProcedure } from '../trpc-index'; import { router, publicProcedure } from '@/src/trpc/trpc-index'
import { db } from '../../db/db_index'; import { db } from '@/src/db/db_index'
import { productInfo, units, productSlots, deliverySlotInfo, storeInfo, productTags, productTagInfo } from '../../db/schema'; import { productInfo, units, productSlots, deliverySlotInfo, storeInfo, productTags, productTagInfo } from '@/src/db/schema'
import { eq, gt, and, sql, inArray } from 'drizzle-orm'; import { eq, gt, and, sql, inArray } from 'drizzle-orm';
import { generateSignedUrlsFromS3Urls, generateSignedUrlFromS3Url } from '../../lib/s3-client'; import { generateSignedUrlsFromS3Urls, generateSignedUrlFromS3Url } from '@/src/lib/s3-client'
import { z } from 'zod'; import { z } from 'zod';
import { getAllProducts as getAllProductsFromCache } from '../../stores/product-store'; import { getAllProducts as getAllProductsFromCache } from '@/src/stores/product-store'
import { getDashboardTags as getDashboardTagsFromCache } from '../../stores/product-tag-store'; import { getDashboardTags as getDashboardTagsFromCache } from '@/src/stores/product-tag-store'
import Fuse from 'fuse.js'; import Fuse from 'fuse.js';
export const getNextDeliveryDate = async (productId: number): Promise<Date | null> => { export const getNextDeliveryDate = async (productId: number): Promise<Date | null> => {

View file

@ -1,10 +1,10 @@
import { router, protectedProcedure } from '../trpc-index'; import { router, protectedProcedure } from '@/src/trpc/trpc-index';
import { z } from 'zod'; import { z } from 'zod';
import { db } from '../../db/db_index'; import { db } from '@/src/db/db_index';
import { addresses, orders, orderStatus, deliverySlotInfo } from '../../db/schema'; import { addresses, orders, orderStatus, deliverySlotInfo } from '@/src/db/schema';
import { eq, and, gte } from 'drizzle-orm'; import { eq, and, gte } from 'drizzle-orm';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import { extractCoordsFromRedirectUrl } from '../../lib/license-util'; import { extractCoordsFromRedirectUrl } from '@/src/lib/license-util';
export const addressRouter = router({ export const addressRouter = router({
getDefaultAddress: protectedProcedure getDefaultAddress: protectedProcedure

View file

@ -1,20 +1,20 @@
import { router, publicProcedure, protectedProcedure } from '../trpc-index'; import { router, publicProcedure, protectedProcedure } from '@/src/trpc/trpc-index';
import { z } from 'zod'; import { z } from 'zod';
import bcrypt from 'bcryptjs'; import bcrypt from 'bcryptjs';
import jwt from 'jsonwebtoken'; import jwt from 'jsonwebtoken';
import { eq } from 'drizzle-orm'; import { eq } from 'drizzle-orm';
import { db } from '../../db/db_index'; import { db } from '@/src/db/db_index';
import { import {
users, userCreds, userDetails, addresses, cartItems, complaints, users, userCreds, userDetails, addresses, cartItems, complaints,
couponApplicableUsers, couponUsage, notifCreds, notifications, couponApplicableUsers, couponUsage, notifCreds, notifications,
orderItems, orderStatus, orders, payments, refunds, orderItems, orderStatus, orders, payments, refunds,
productReviews, reservedCoupons productReviews, reservedCoupons
} from '../../db/schema'; } from '@/src/db/schema';
import { generateSignedUrlFromS3Url } from '../../lib/s3-client'; import { generateSignedUrlFromS3Url } from '@/src/lib/s3-client';
import { ApiError } from '../../lib/api-error'; import { ApiError } from '@/src/lib/api-error';
import catchAsync from '../../lib/catch-async'; import catchAsync from '@/src/lib/catch-async';
import { jwtSecret } from 'src/lib/env-exporter'; import { jwtSecret } from '@/src/lib/env-exporter';
import { sendOtp, verifyOtpUtil, getOtpCreds } from '../../lib/otp-utils'; import { sendOtp, verifyOtpUtil, getOtpCreds } from '@/src/lib/otp-utils';
interface LoginRequest { interface LoginRequest {
identifier: string; // email or mobile identifier: string; // email or mobile

View file

@ -1,7 +1,7 @@
import { db } from '../../db/db_index'; import { db } from '@/src/db/db_index';
import { homeBanners } from '../../db/schema'; import { homeBanners } from '@/src/db/schema';
import { publicProcedure, router } from '../trpc-index'; import { publicProcedure, router } from '@/src/trpc/trpc-index';
import { generateSignedUrlFromS3Url } from '../../lib/s3-client'; import { generateSignedUrlFromS3Url } from '@/src/lib/s3-client';
import { isNotNull, asc } from 'drizzle-orm'; import { isNotNull, asc } from 'drizzle-orm';
export const bannerRouter = router({ export const bannerRouter = router({

View file

@ -1,11 +1,11 @@
import { router, protectedProcedure, publicProcedure } from '../trpc-index'; import { router, protectedProcedure, publicProcedure } from '@/src/trpc/trpc-index';
import { z } from 'zod'; import { z } from 'zod';
import { db } from '../../db/db_index'; import { db } from '@/src/db/db_index';
import { cartItems, productInfo, units, productSlots, deliverySlotInfo } from '../../db/schema'; import { cartItems, productInfo, units, productSlots, deliverySlotInfo } from '@/src/db/schema';
import { eq, and, sql, inArray, gt } from 'drizzle-orm'; import { eq, and, sql, inArray, gt } from 'drizzle-orm';
import { ApiError } from '../../lib/api-error'; import { ApiError } from '@/src/lib/api-error';
import { generateSignedUrlsFromS3Urls, scaffoldAssetUrl } from '../../lib/s3-client'; import { generateSignedUrlsFromS3Urls, scaffoldAssetUrl } from '@/src/lib/s3-client';
import { getProductSlots, getMultipleProductsSlots } from '../../stores/slot-store'; import { getProductSlots, getMultipleProductsSlots } from '@/src/stores/slot-store';
interface CartResponse { interface CartResponse {
items: any[]; items: any[];

View file

@ -1,7 +1,7 @@
import { router, protectedProcedure } from '../trpc-index'; import { router, protectedProcedure } from '@/src/trpc/trpc-index';
import { z } from 'zod'; import { z } from 'zod';
import { db } from '../../db/db_index'; import { db } from '@/src/db/db_index';
import { complaints } from '../../db/schema'; import { complaints } from '@/src/db/schema';
import { eq } from 'drizzle-orm'; import { eq } from 'drizzle-orm';
export const complaintRouter = router({ export const complaintRouter = router({

View file

@ -1,11 +1,11 @@
import { router, protectedProcedure } from '../trpc-index'; import { router, protectedProcedure } from '@/src/trpc/trpc-index';
import { z } from 'zod'; import { z } from 'zod';
import { db } from '../../db/db_index'; import { db } from '@/src/db/db_index';
import { coupons, couponUsage, couponApplicableUsers, reservedCoupons, couponApplicableProducts } from '../../db/schema'; import { coupons, couponUsage, couponApplicableUsers, reservedCoupons, couponApplicableProducts } from '@/src/db/schema';
import { eq, and, or, gt, isNull, sql } from 'drizzle-orm'; import { eq, and, or, gt, isNull, sql } from 'drizzle-orm';
import { ApiError } from 'src/lib/api-error'; import { ApiError } from '@/src/lib/api-error';
import { users } from '../../db/schema'; import { users } from '@/src/db/schema';
type CouponWithRelations = typeof coupons.$inferSelect & { type CouponWithRelations = typeof coupons.$inferSelect & {
applicableUsers: (typeof couponApplicableUsers.$inferSelect & { user: typeof users.$inferSelect })[]; applicableUsers: (typeof couponApplicableUsers.$inferSelect & { user: typeof users.$inferSelect })[];

View file

@ -1,7 +1,7 @@
import { router, protectedProcedure } from '../trpc-index'; import { router, protectedProcedure } from '@/src/trpc/trpc-index';
import { z } from 'zod'; import { z } from 'zod';
import { generateUploadUrl } from '../../lib/s3-client'; import { generateUploadUrl } from '@/src/lib/s3-client';
import { ApiError } from '../../lib/api-error'; import { ApiError } from '@/src/lib/api-error';
export const fileUploadRouter = router({ export const fileUploadRouter = router({
generateUploadUrls: protectedProcedure generateUploadUrls: protectedProcedure

View file

@ -1,6 +1,6 @@
import { router, protectedProcedure } from "../trpc-index"; import { router, protectedProcedure } from "@/src/trpc/trpc-index";
import { z } from "zod"; import { z } from "zod";
import { db } from "../../db/db_index"; import { db } from "@/src/db/db_index";
import { import {
orders, orders,
orderItems, orderItems,
@ -15,19 +15,19 @@ import {
refunds, refunds,
units, units,
userDetails, userDetails,
} from "../../db/schema"; } from "@/src/db/schema";
import { eq, and, inArray, desc, gte, lte } from "drizzle-orm"; import { eq, and, inArray, desc, gte, lte } from "drizzle-orm";
import { scaffoldAssetUrl } from "../../lib/s3-client"; import { scaffoldAssetUrl } from "@/src/lib/s3-client";
import { ApiError } from "../../lib/api-error"; import { ApiError } from "@/src/lib/api-error";
import { import {
sendOrderPlacedNotification, sendOrderPlacedNotification,
sendOrderCancelledNotification, sendOrderCancelledNotification,
} from "../../lib/notif-job"; } from "@/src/lib/notif-job";
import { RazorpayPaymentService } from "../../lib/payments-utils"; import { RazorpayPaymentService } from "@/src/lib/payments-utils";
import { getNextDeliveryDate } from "../common-apis/common"; import { getNextDeliveryDate } from "@/src/trpc/apis/common-apis/common";
import { CONST_KEYS, getConstant, getConstants } from "../../lib/const-store"; import { CONST_KEYS, getConstant, getConstants } from "@/src/lib/const-store";
import { publishFormattedOrder, publishCancellation } from "../../lib/post-order-handler"; import { publishFormattedOrder, publishCancellation } from "@/src/lib/post-order-handler";
import { getSlotById } from "../../stores/slot-store"; import { getSlotById } from "@/src/stores/slot-store";
const validateAndGetCoupon = async ( const validateAndGetCoupon = async (

View file

@ -1,14 +1,14 @@
import { router, protectedProcedure } from '../trpc-index'; import { router, protectedProcedure } from '@/src/trpc/trpc-index';
import { z } from 'zod'; import { z } from 'zod';
import { db } from '../../db/db_index'; import { db } from '@/src/db/db_index';
import { orders, payments, orderStatus } from '../../db/schema'; import { orders, payments, orderStatus } from '@/src/db/schema';
import { eq } from 'drizzle-orm'; import { eq } from 'drizzle-orm';
import { ApiError } from '../../lib/api-error'; import { ApiError } from '@/src/lib/api-error';
import crypto from 'crypto'; import crypto from 'crypto';
import { razorpayId, razorpaySecret } from "../../lib/env-exporter"; import { razorpayId, razorpaySecret } from "@/src/lib/env-exporter";
import { DiskPersistedSet } from "src/lib/disk-persisted-set"; import { DiskPersistedSet } from "@/src/lib/disk-persisted-set";
import { RazorpayPaymentService } from "../../lib/payments-utils"; import { RazorpayPaymentService } from "@/src/lib/payments-utils";
@ -156,4 +156,3 @@ export const paymentRouter = router({
}), }),
}); });

View file

@ -1,11 +1,11 @@
import { router, publicProcedure, protectedProcedure } from '../trpc-index'; import { router, publicProcedure, protectedProcedure } from '@/src/trpc/trpc-index';
import { z } from 'zod'; import { z } from 'zod';
import { db } from '../../db/db_index'; import { db } from '@/src/db/db_index';
import { productInfo, units, productSlots, deliverySlotInfo, specialDeals, storeInfo, productTagInfo, productTags, productReviews, users } from '../../db/schema'; import { productInfo, units, productSlots, deliverySlotInfo, specialDeals, storeInfo, productTagInfo, productTags, productReviews, users } from '@/src/db/schema';
import { claimUploadUrl, extractKeyFromPresignedUrl, scaffoldAssetUrl } from '../../lib/s3-client'; import { claimUploadUrl, extractKeyFromPresignedUrl, scaffoldAssetUrl } from '@/src/lib/s3-client';
import { ApiError } from '../../lib/api-error'; import { ApiError } from '@/src/lib/api-error';
import { eq, and, gt, sql, inArray, desc } from 'drizzle-orm'; import { eq, and, gt, sql, inArray, desc } from 'drizzle-orm';
import { getProductById as getProductByIdFromCache, getAllProducts as getAllProductsFromCache } from '../../stores/product-store'; import { getProductById as getProductByIdFromCache, getAllProducts as getAllProductsFromCache } from '@/src/stores/product-store';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
// Uniform Product Type // Uniform Product Type

View file

@ -1,14 +1,14 @@
import { router, publicProcedure } from "../trpc-index"; import { router, publicProcedure } from "@/src/trpc/trpc-index";
import { z } from "zod"; import { z } from "zod";
import { db } from "../../db/db_index"; import { db } from "@/src/db/db_index";
import { import {
deliverySlotInfo, deliverySlotInfo,
productSlots, productSlots,
productInfo, productInfo,
units, units,
} from "../../db/schema"; } from "@/src/db/schema";
import { eq, and, gt, asc } from "drizzle-orm"; import { eq, and, gt, asc } from "drizzle-orm";
import { getAllSlots as getAllSlotsFromCache, getSlotById as getSlotByIdFromCache } from "../../stores/slot-store"; import { getAllSlots as getAllSlotsFromCache, getSlotById as getSlotByIdFromCache } from "@/src/stores/slot-store";
import dayjs from 'dayjs'; import dayjs from 'dayjs';
// Helper method to get formatted slot data by ID // Helper method to get formatted slot data by ID

View file

@ -1,10 +1,10 @@
import { router, publicProcedure } from '../trpc-index'; import { router, publicProcedure } from '@/src/trpc/trpc-index';
import { z } from 'zod'; import { z } from 'zod';
import { db } from '../../db/db_index'; import { db } from '@/src/db/db_index';
import { storeInfo, productInfo, units } from '../../db/schema'; import { storeInfo, productInfo, units } from '@/src/db/schema';
import { eq, and, sql } from 'drizzle-orm'; import { eq, and, sql } from 'drizzle-orm';
import { scaffoldAssetUrl } from '../../lib/s3-client'; import { scaffoldAssetUrl } from '@/src/lib/s3-client';
import { ApiError } from '../../lib/api-error'; import { ApiError } from '@/src/lib/api-error';
export const storesRouter = router({ export const storesRouter = router({
getStores: publicProcedure getStores: publicProcedure

View file

@ -1,7 +1,7 @@
import { router, publicProcedure } from '../trpc-index'; import { router, publicProcedure } from '@/src/trpc/trpc-index';
import { z } from 'zod'; import { z } from 'zod';
import { getTagsByStoreId } from '../../stores/product-tag-store'; import { getTagsByStoreId } from '@/src/stores/product-tag-store';
import { ApiError } from '../../lib/api-error'; import { ApiError } from '@/src/lib/api-error';
export const tagsRouter = router({ export const tagsRouter = router({
getTagsByStore: publicProcedure getTagsByStore: publicProcedure

View file

@ -0,0 +1,34 @@
import { router } from '@/src/trpc/trpc-index';
import { addressRouter } from '@/src/trpc/apis/user-apis/apis/address';
import { authRouter } from '@/src/trpc/apis/user-apis/apis/auth';
import { bannerRouter } from '@/src/trpc/apis/user-apis/apis/banners';
import { cartRouter } from '@/src/trpc/apis/user-apis/apis/cart';
import { complaintRouter } from '@/src/trpc/apis/user-apis/apis/complaint';
import { orderRouter } from '@/src/trpc/apis/user-apis/apis/order';
import { productRouter } from '@/src/trpc/apis/user-apis/apis/product';
import { slotsRouter } from '@/src/trpc/apis/user-apis/apis/slots';
import { userRouter as userDataRouter } from '@/src/trpc/apis/user-apis/apis/user';
import { userCouponRouter } from '@/src/trpc/apis/user-apis/apis/coupon';
import { paymentRouter } from '@/src/trpc/apis/user-apis/apis/payments';
import { storesRouter } from '@/src/trpc/apis/user-apis/apis/stores';
import { fileUploadRouter } from '@/src/trpc/apis/user-apis/apis/file-upload';
import { tagsRouter } from '@/src/trpc/apis/user-apis/apis/tags';
export const userRouter = router({
address: addressRouter,
auth: authRouter,
banner: bannerRouter,
cart: cartRouter,
complaint: complaintRouter,
order: orderRouter,
product: productRouter,
slots: slotsRouter,
user: userDataRouter,
coupon: userCouponRouter,
payment: paymentRouter,
stores: storesRouter,
fileUpload: fileUploadRouter,
tags: tagsRouter,
});
export type UserRouter = typeof userRouter;

View file

@ -1,12 +1,12 @@
import { router, protectedProcedure, publicProcedure } from '../trpc-index'; import { router, protectedProcedure, publicProcedure } from '@/src/trpc/trpc-index';
import jwt from 'jsonwebtoken'; import jwt from 'jsonwebtoken';
import { eq, and } from 'drizzle-orm'; import { eq, and } from 'drizzle-orm';
import { z } from 'zod'; import { z } from 'zod';
import { db } from '../../db/db_index'; import { db } from '@/src/db/db_index';
import { users, userDetails, userCreds, notifCreds, unloggedUserTokens } from '../../db/schema'; import { users, userDetails, userCreds, notifCreds, unloggedUserTokens } from '@/src/db/schema';
import { ApiError } from '../../lib/api-error'; import { ApiError } from '@/src/lib/api-error';
import { jwtSecret } from 'src/lib/env-exporter'; import { jwtSecret } from '@/src/lib/env-exporter';
import { generateSignedUrlFromS3Url } from '../../lib/s3-client'; import { generateSignedUrlFromS3Url } from '@/src/lib/s3-client';
interface AuthResponse { interface AuthResponse {
token: string; token: string;

View file

@ -1,8 +1,8 @@
import { router, publicProcedure } from './trpc-index'; import { router, publicProcedure } from '@/src/trpc/trpc-index'
import { z } from 'zod'; import { z } from 'zod';
import { adminRouter } from './admin-apis/admin-trpc-index'; import { adminRouter } from '@/src/trpc/apis/admin-apis/apis/admin-trpc-index'
import { userRouter } from './user-apis/user-trpc-index'; import { userRouter } from '@/src/trpc/apis/user-apis/apis/user-trpc-index'
import { commonApiRouter } from './common-apis/common-trpc-index'; import { commonApiRouter } from '@/src/trpc/apis/common-apis/common-trpc-index'
// Create the main app router // Create the main app router
export const appRouter = router({ export const appRouter = router({

View file

@ -1,34 +0,0 @@
import { router } from '../trpc-index';
import { addressRouter } from './address';
import { authRouter } from './auth';
import { bannerRouter } from './banners';
import { cartRouter } from './cart';
import { complaintRouter } from './complaint';
import { orderRouter } from './order';
import { productRouter } from './product';
import { slotsRouter } from './slots';
import { userRouter as userDataRouter } from './user';
import { userCouponRouter } from './coupon';
import { paymentRouter } from './payments';
import { storesRouter } from './stores';
import { fileUploadRouter } from './file-upload';
import { tagsRouter } from './tags';
export const userRouter = router({
address: addressRouter,
auth: authRouter,
banner: bannerRouter,
cart: cartRouter,
complaint: complaintRouter,
order: orderRouter,
product: productRouter,
slots: slotsRouter,
user: userDataRouter,
coupon: userCouponRouter,
payment: paymentRouter,
stores: storesRouter,
fileUpload: fileUploadRouter,
tags: tagsRouter,
});
export type UserRouter = typeof userRouter;

View file

@ -2,13 +2,13 @@ import { Request, Response, NextFunction } from 'express';
import bcrypt from 'bcryptjs'; import bcrypt from 'bcryptjs';
import jwt from 'jsonwebtoken'; import jwt from 'jsonwebtoken';
import { eq } from 'drizzle-orm'; import { eq } from 'drizzle-orm';
import { db } from '../db/db_index'; import { db } from '@/src/db/db_index'
import { users, userCreds, userDetails } from '../db/schema'; import { users, userCreds, userDetails } from '@/src/db/schema'
import { ApiError } from '../lib/api-error'; import { ApiError } from '@/src/lib/api-error'
import catchAsync from '../lib/catch-async'; import catchAsync from '@/src/lib/catch-async'
import { jwtSecret } from 'src/lib/env-exporter'; import { jwtSecret } from '@/src/lib/env-exporter';
import uploadHandler from '../lib/upload-handler'; import uploadHandler from '@/src/lib/upload-handler'
import { imageUploadS3, generateSignedUrlFromS3Url } from '../lib/s3-client'; import { imageUploadS3, generateSignedUrlFromS3Url } from '@/src/lib/s3-client'
interface RegisterRequest { interface RegisterRequest {
name: string; name: string;

View file

@ -1,7 +1,7 @@
import { Router } from 'express'; import { Router } from 'express';
import { register, updateProfile } from './auth.controller'; import { register, updateProfile } from '@/src/uv-apis/auth.controller'
import { verifyToken } from '../middleware/auth'; import { verifyToken } from '@/src/middleware/auth'
import uploadHandler from '../lib/upload-handler'; import uploadHandler from '@/src/lib/upload-handler'
const router = Router(); const router = Router();

View file

@ -1,9 +1,9 @@
import { Request, Response, NextFunction } from 'express'; import { Request, Response, NextFunction } from 'express';
import { db } from '../db/db_index'; import { db } from '@/src/db/db_index'
import { complaints } from '../db/schema'; import { complaints } from '@/src/db/schema'
import { ApiError } from '../lib/api-error'; import { ApiError } from '@/src/lib/api-error'
import catchAsync from '../lib/catch-async'; import catchAsync from '@/src/lib/catch-async'
import { imageUploadS3 } from '../lib/s3-client'; import { imageUploadS3 } from '@/src/lib/s3-client'
interface RaiseComplaintRequest { interface RaiseComplaintRequest {
orderId?: string; orderId?: string;

View file

@ -1,7 +1,7 @@
import { Router } from "express"; import { Router } from "express";
import authRouter from "./auth.router"; import authRouter from "@/src/uv-apis/auth.router"
import { raiseComplaint } from "./user-rest.controller"; import { raiseComplaint } from "@/src/uv-apis/user-rest.controller"
import uploadHandler from "src/lib/upload-handler"; import uploadHandler from "@/src/lib/upload-handler";
const router = Router(); const router = Router();

Some files were not shown because too many files have changed in this diff Show more