merge test #1
139 changed files with 7224 additions and 460 deletions
4
.expo/prebuild/cached-packages.json
Normal file
4
.expo/prebuild/cached-packages.json
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"dependencies": "c63a16a85154f1ea03750b1df53dcdee0200585f",
|
||||||
|
"devDependencies": "0a1ec1c6df1c9d5100926df058dd0824b1293819"
|
||||||
|
}
|
||||||
6
app.json
6
app.json
|
|
@ -1,3 +1,7 @@
|
||||||
{
|
{
|
||||||
"expo": {}
|
"expo": {
|
||||||
|
"ios": {
|
||||||
|
"bundleIdentifier": "com.mohammedshafiuddin54.meat-farmer-monorepo"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{
|
{
|
||||||
"dependencies": "091948e86692e0cce7744b6b0543448538c3125a",
|
"dependencies": "4650ceb7c30aaa4d5fd17b9577e186af7a84b50d",
|
||||||
"devDependencies": "b3b38265f32b99a8299270a292f38ca26288d53d"
|
"devDependencies": "b3b38265f32b99a8299270a292f38ca26288d53d"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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`,
|
||||||
|
|
|
||||||
|
|
@ -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 }}
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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())}
|
||||||
|
|
|
||||||
|
|
@ -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`}
|
||||||
|
|
|
||||||
|
|
@ -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';
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
@ -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()
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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;
|
||||||
|
|
@ -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();
|
||||||
|
|
||||||
|
|
@ -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();
|
||||||
|
|
||||||
0
apps/backend/src/apis/admin-apis/dataAccessors/demo.txt
Normal file
0
apps/backend/src/apis/admin-apis/dataAccessors/demo.txt
Normal 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
|
||||||
|
|
@ -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();
|
||||||
|
|
||||||
|
|
@ -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();
|
||||||
|
|
||||||
0
apps/backend/src/apis/common-apis/dataAccessors/demo.txt
Normal file
0
apps/backend/src/apis/common-apis/dataAccessors/demo.txt
Normal 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');
|
||||||
|
|
|
||||||
|
|
@ -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';
|
||||||
|
|
|
||||||
|
|
@ -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...");
|
||||||
|
|
|
||||||
|
|
@ -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>;
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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 = [
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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:';
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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 },
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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>();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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';
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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({
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
|
|
||||||
|
|
@ -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?: {
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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 ============
|
||||||
|
|
|
||||||
|
|
@ -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'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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> {
|
||||||
|
|
|
||||||
|
|
@ -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;
|
|
||||||
|
|
@ -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 () => {
|
||||||
|
|
@ -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;
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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({
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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';
|
||||||
|
|
||||||
|
|
@ -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(),
|
||||||
|
|
@ -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({
|
||||||
|
|
@ -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)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -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[];
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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,
|
||||||
|
|
@ -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"),
|
||||||
|
|
@ -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);
|
||||||
|
|
||||||
|
|
@ -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> => {
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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({
|
||||||
|
|
@ -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[];
|
||||||
|
|
@ -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({
|
||||||
|
|
@ -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 })[];
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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 (
|
||||||
|
|
@ -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({
|
||||||
}),
|
}),
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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
|
||||||
34
apps/backend/src/trpc/apis/user-apis/apis/user-trpc-index.ts
Normal file
34
apps/backend/src/trpc/apis/user-apis/apis/user-trpc-index.ts
Normal 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;
|
||||||
|
|
@ -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;
|
||||||
|
|
@ -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({
|
||||||
|
|
|
||||||
|
|
@ -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;
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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
Loading…
Add table
Reference in a new issue