diff --git a/apps/admin-ui/app/(drawer)/delivery-sequences/index.tsx b/apps/admin-ui/app/(drawer)/delivery-sequences/index.tsx index afb2c3c..6510449 100644 --- a/apps/admin-ui/app/(drawer)/delivery-sequences/index.tsx +++ b/apps/admin-ui/app/(drawer)/delivery-sequences/index.tsx @@ -27,6 +27,9 @@ import { trpc } from "@/src/trpc-client"; import MaterialIcons from "@expo/vector-icons/MaterialIcons"; import Entypo from "@expo/vector-icons/Entypo"; import * as Location from "expo-location"; +import { OrderOptionsMenu } from "@/components/OrderOptionsMenu"; +import CancelOrderDialog from "@/components/CancelOrderDialog"; +import { OrderNotesForm } from "@/components/OrderNotesForm"; // Define types outside interface OrderWithSequence { @@ -270,6 +273,8 @@ export default function DeliverySequences() { const [selectedUserId, setSelectedUserId] = useState(-1); const [selectedOrderIds, setSelectedOrderIds] = useState([]); const [hasSequenceChanged, setHasSequenceChanged] = useState(false); + const [cancelDialogOpen, setCancelDialogOpen] = useState(false); + const [notesDialogOpen, setNotesDialogOpen] = useState(false); const router = useRouter(); const { data: slotsData, refetch: refetchSlots } = @@ -705,273 +710,90 @@ export default function DeliverySequences() { )} {/* Order Menu Dialog */} - setShowOrderMenu(false)} - > - - {/* Handle Bar */} - - - - Order #{selectedOrder?.readableId} - - - Select an action to perform - - - - {/* Actions */} - { - router.push(`/order-details/${selectedOrder?.id}`); - setShowOrderMenu(false); - }} - disabled={updateAddressCoordsMutation.isPending} - > - - - - - - View Details - - - See full order information - - - - - - { - if (!selectedOrder) return; - try { - await updatePackagedMutation.mutateAsync({ - orderId: selectedOrder.id.toString(), - isPackaged: !selectedOrder.isPackaged, - }); + order={{ + id: selectedOrder?.id || 0, + readableId: selectedOrder?.readableId || 0, + isPackaged: selectedOrder?.isPackaged || false, + isDelivered: selectedOrder?.isDelivered || false, + address: selectedOrder?.address || '', + addressId: selectedOrder?.addressId || 0, + adminNotes: selectedOrder?.adminNotes || null, + latitude: selectedOrder?.latitude || null, + longitude: selectedOrder?.longitude || null, + }} + onViewDetails={() => { + if (selectedOrder) { + router.push(`/order-details/${selectedOrder.id}`); + } + setShowOrderMenu(false); + }} + onTogglePackaged={() => { + if (!selectedOrder) return; + updatePackagedMutation.mutate( + { orderId: selectedOrder.id.toString(), isPackaged: !selectedOrder.isPackaged }, + { + onSuccess: () => { refetchOrders(); refetchSequence(); - setShowOrderMenu(false); - } catch (error) { + }, + onError: () => { Alert.alert("Error", "Failed to update packaged status"); - } - }} - disabled={updatePackagedMutation.isPending} - > - - - - - - {selectedOrder?.isPackaged - ? "Unmark Packaged" - : "Mark Packaged"} - - - {selectedOrder?.isPackaged - ? "Revert to not packaged" - : "Update status to packaged"} - - - - - - { - if (!selectedOrder) return; - try { - await updateDeliveredMutation.mutateAsync({ - orderId: selectedOrder.id.toString(), - isDelivered: !selectedOrder.isDelivered, - }); + }, + } + ); + }} + onToggleDelivered={() => { + if (!selectedOrder) return; + updateDeliveredMutation.mutate( + { orderId: selectedOrder.id.toString(), isDelivered: !selectedOrder.isDelivered }, + { + onSuccess: () => { refetchOrders(); refetchSequence(); - setShowOrderMenu(false); - } catch (error) { + }, + onError: () => { Alert.alert("Error", "Failed to update delivered status"); - } - }} - disabled={updateDeliveredMutation.isPending} - > - - - - - - {selectedOrder?.isDelivered - ? "Unmark Delivered" - : "Mark Delivered"} - - - {selectedOrder?.isDelivered - ? "Revert delivery status" - : "Complete the delivery"} - - - - + }, + } + ); + }} + onOpenAdminNotes={() => { + setShowOrderMenu(false); + setNotesDialogOpen(true); + }} + onCancelOrder={() => { + setShowOrderMenu(false); + setCancelDialogOpen(true); + }} + onAttachLocation={() => {}} + onWhatsApp={() => {}} + onDial={() => {}} + /> - { - if (!selectedOrder) return; - try { - const { status } = - await Location.requestForegroundPermissionsAsync(); - if (status !== "granted") { - Alert.alert( - "Permission Denied", - "Location permission is required to attach coordinates." - ); - return; - } - const location = await Location.getCurrentPositionAsync({ - accuracy: Location.Accuracy.High, - }); - const { latitude, longitude } = location.coords; - await updateAddressCoordsMutation.mutateAsync({ - addressId: selectedOrder.addressId, - latitude, - longitude, - }); - Alert.alert( - "Success", - "Location attached to address successfully." - ); - } catch (error) { - Alert.alert( - "Error", - "Failed to attach location. Please try again." - ); - } - setShowOrderMenu(false); - }} - > - - - - - - Attach Location - - - Save coordinates to address - - - - + setCancelDialogOpen(false)} + onSuccess={() => { + refetchOrders(); + refetchSequence(); + }} + /> - { - const phoneMatch = selectedOrder?.address.match(/Phone: (\d+)/); - const phone = phoneMatch ? phoneMatch[1] : null; - if (phone) { - Linking.openURL(`whatsapp://send?phone=+91${phone}`); - } else { - Alert.alert("No phone number found"); - } - setShowOrderMenu(false); - }} - > - - - - - - Message On WhatsApp - - - Send message via WhatsApp - - - - - - { - const phoneMatch = selectedOrder?.address.match(/Phone: (\d+)/); - const phone = phoneMatch ? phoneMatch[1] : null; - if (phone) { - Linking.openURL(`tel:${phone}`); - } else { - Alert.alert("No phone number found"); - } - setShowOrderMenu(false); - }} - > - - - - - - Dial Mobile Number - - - Call customer directly - - - - - + setNotesDialogOpen(false)}> + { + refetchOrders(); + refetchSequence(); + setNotesDialogOpen(false); + }} + onCancel={() => setNotesDialogOpen(false)} + /> ); diff --git a/apps/admin-ui/app/(drawer)/orders/index.tsx b/apps/admin-ui/app/(drawer)/orders/index.tsx index 2f82762..6508e3f 100644 --- a/apps/admin-ui/app/(drawer)/orders/index.tsx +++ b/apps/admin-ui/app/(drawer)/orders/index.tsx @@ -1,5 +1,5 @@ import React, { useState , useEffect } from 'react'; -import { View, TouchableOpacity, Alert, TextInput, ActivityIndicator } from 'react-native'; +import { View, TouchableOpacity, Alert, TextInput, ActivityIndicator, Linking } from 'react-native'; import { AppContainer, MyText, tw, MyFlatList, BottomDialog, BottomDropdown, Checkbox, theme, MyTextInput } from 'common-ui'; import { trpc } from '../../../src/trpc-client'; import { useRouter, useLocalSearchParams } from 'expo-router'; @@ -7,6 +7,8 @@ import dayjs from 'dayjs'; import MaterialIcons from '@expo/vector-icons/MaterialIcons'; import { Entypo } from '@expo/vector-icons'; import CancelOrderDialog from '@/components/CancelOrderDialog'; +import { OrderOptionsMenu } from '@/components/OrderOptionsMenu'; +import * as Location from 'expo-location'; const AdminNotesForm = ({ orderId, existingNotes, onClose, refetch }: { orderId: string; existingNotes?: string | null; onClose: () => void; refetch: () => void }) => { const [notesText, setNotesText] = useState(existingNotes || ''); @@ -111,7 +113,6 @@ const OrderItem = ({ order, refetch }: { order: OrderType; refetch: () => void } { orderId: order.orderId.toString(), isPackaged }, { onSuccess: () => { - setMenuOpen(false); refetch(); }, } @@ -123,7 +124,6 @@ const OrderItem = ({ order, refetch }: { order: OrderType; refetch: () => void } { orderId: order.orderId.toString(), isDelivered }, { onSuccess: () => { - setMenuOpen(false); refetch(); }, } @@ -344,81 +344,40 @@ const OrderItem = ({ order, refetch }: { order: OrderType; refetch: () => void } - setMenuOpen(false)}> - - - Order Options - - {order.isFlashDelivery && ( - - - - Flash Delivery Order - - Deliver within 30 minutes • High Priority - - - - )} - handleMarkPackaged(!order.isPackaged)} - > - - - {order.isPackaged ? 'Mark Not Packaged' : 'Mark Packaged'} - - - {order.isPackaged && ( - handleMarkDelivered(!order.isDelivered)} - > - - - {order.isDelivered ? 'Mark Not Delivered' : 'Mark Delivered'} - - - )} - - - - Order Details - - - { - setMenuOpen(false); - setNotesDialogOpen(true); - }} - > - - - Admin Notes - - - {order.status !== 'cancelled' && ( - { - setMenuOpen(false); - setCancelDialogOpen(true); - }} - > - - - Cancel Order - - - )} - - + setMenuOpen(false)} + order={{ + id: order.id, + readableId: order.readableId, + isPackaged: order.isPackaged, + isDelivered: order.isDelivered, + isFlashDelivery: order.isFlashDelivery, + address: order.address, + addressId: 0, + adminNotes: order.adminNotes, + userNotes: order.userNotes, + latitude: null, + longitude: null, + status: order.status, + }} + onViewDetails={handleMenuOption} + onTogglePackaged={() => handleMarkPackaged(!order.isPackaged)} + onToggleDelivered={() => handleMarkDelivered(!order.isDelivered)} + onOpenAdminNotes={() => { + setMenuOpen(false); + setNotesDialogOpen(true); + }} + onCancelOrder={() => { + setMenuOpen(false); + setCancelDialogOpen(true); + }} + onAttachLocation={() => {}} + onWhatsApp={() => {}} + onDial={() => {}} + /> - setItemsDialogOpen(false)}> + setItemsDialogOpen(false)}> @@ -823,4 +782,4 @@ export default function Orders() { ); -} \ No newline at end of file +} diff --git a/apps/admin-ui/components/OrderOptionsMenu.tsx b/apps/admin-ui/components/OrderOptionsMenu.tsx new file mode 100644 index 0000000..424b48e --- /dev/null +++ b/apps/admin-ui/components/OrderOptionsMenu.tsx @@ -0,0 +1,306 @@ +import React from 'react'; +import { View, TouchableOpacity, Linking, Alert, TextInput, ScrollView, Dimensions } from 'react-native'; +import * as Location from 'expo-location'; + +const { height: SCREEN_HEIGHT } = Dimensions.get('window'); +import { + MyText, + tw, + BottomDialog, +} from 'common-ui'; +import { trpc } from '@/src/trpc-client'; +import MaterialIcons from '@expo/vector-icons/MaterialIcons'; +import Ionicons from '@expo/vector-icons/Ionicons'; + +interface OrderOptionsMenuProps { + open: boolean; + onClose: () => void; + order: { + id: number; + readableId: number; + isPackaged: boolean; + isDelivered: boolean; + isFlashDelivery?: boolean; + address: string; + addressId: number; + adminNotes?: string | null; + userNotes?: string | null; + latitude?: number | null; + longitude?: number | null; + status?: string; + }; + onViewDetails: () => void; + onTogglePackaged: () => void; + onToggleDelivered: () => void; + onOpenAdminNotes: () => void; + onCancelOrder: () => void; + onAttachLocation: () => void; + onWhatsApp: () => void; + onDial: () => void; +} + +export function OrderOptionsMenu({ + open, + onClose, + order, + onViewDetails, + onTogglePackaged, + onToggleDelivered, + onOpenAdminNotes, + onCancelOrder, + onAttachLocation, + onWhatsApp, + onDial, +}: OrderOptionsMenuProps) { + const updateAddressCoordsMutation = trpc.admin.order.updateAddressCoords.useMutation(); + + const handleAttachLocation = async () => { + try { + const { status } = await Location.requestForegroundPermissionsAsync(); + if (status !== 'granted') { + Alert.alert( + 'Permission Denied', + 'Location permission is required to attach coordinates.' + ); + return; + } + const location = await Location.getCurrentPositionAsync({ + accuracy: Location.Accuracy.High, + }); + const { latitude, longitude } = location.coords; + await updateAddressCoordsMutation.mutateAsync({ + addressId: order.addressId, + latitude, + longitude, + }); + Alert.alert('Success', 'Location attached to address successfully.'); + onAttachLocation(); + } catch (error) { + Alert.alert('Error', 'Failed to attach location. Please try again.'); + } + }; + + const extractPhone = (address: string) => { + const phoneMatch = address.match(/Phone: (\d+)/); + return phoneMatch ? phoneMatch[1] : null; + }; + + const handleWhatsApp = () => { + const phone = extractPhone(order.address); + if (phone) { + Linking.openURL(`whatsapp://send?phone=+91${phone}`); + } else { + Alert.alert('No phone number found'); + } + }; + + const handleDial = () => { + const phone = extractPhone(order.address); + if (phone) { + Linking.openURL(`tel:${phone}`); + } else { + Alert.alert('No phone number found'); + } + }; + + return ( + + + + + + + + Order #{order.readableId} + + + Select an action to perform + + + + { + onViewDetails(); + onClose(); + }} + > + + + + + + View Details + + + See full order information + + + + + + + true} + onResponderEnd={(e) => { + e.stopPropagation(); + onTogglePackaged(); + }} + > + + + + + Packaged + + + {order.isPackaged ? 'Mark as not packaged' : 'Mark as packaged'} + + + + + + true} + onResponderEnd={(e) => { + e.stopPropagation(); + onToggleDelivered(); + }} + > + + + + + Delivered + + + {order.isDelivered ? 'Mark as not delivered' : 'Mark as delivered'} + + + + + { + onOpenAdminNotes(); + onClose(); + }} + > + + + + + + Admin Notes + + + {order.adminNotes ? 'Edit existing notes' : 'Add admin notes'} + + + + + + {order.status !== 'cancelled' && ( + { + onCancelOrder(); + onClose(); + }} + > + + + + + + Cancel Order + + + Cancel and provide reason + + + + + )} + + { + handleAttachLocation(); + onClose(); + }} + disabled={updateAddressCoordsMutation.isPending} + > + + + + + + Attach Location + + + Save GPS coordinates to address + + + + + + { + handleWhatsApp(); + onClose(); + }} + > + + + + + + Message On WhatsApp + + + Send message via WhatsApp + + + + + + { + handleDial(); + onClose(); + }} + > + + + + + + Dial Mobile Number + + + Call customer directly + + + + + + + + + ); +} \ No newline at end of file diff --git a/apps/backend/drizzle/0068_colossal_magma.sql b/apps/backend/drizzle/0068_colossal_magma.sql new file mode 100644 index 0000000..55fdba1 --- /dev/null +++ b/apps/backend/drizzle/0068_colossal_magma.sql @@ -0,0 +1,2 @@ +ALTER TABLE "mf"."addresses" ADD COLUMN "admin_latitude" real;--> statement-breakpoint +ALTER TABLE "mf"."addresses" ADD COLUMN "admin_longitude" real; \ No newline at end of file diff --git a/apps/backend/drizzle/meta/0068_snapshot.json b/apps/backend/drizzle/meta/0068_snapshot.json new file mode 100644 index 0000000..5d27ef0 --- /dev/null +++ b/apps/backend/drizzle/meta/0068_snapshot.json @@ -0,0 +1,3612 @@ +{ + "id": "9e107cf4-10af-409c-b465-73740ca869e1", + "prevId": "5da5eca2-307f-4098-a9c7-9fcaaac5c3e2", + "version": "7", + "dialect": "postgresql", + "tables": { + "mf.address_areas": { + "name": "address_areas", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "address_areas_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "place_name": { + "name": "place_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "zone_id": { + "name": "zone_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "address_areas_zone_id_address_zones_id_fk": { + "name": "address_areas_zone_id_address_zones_id_fk", + "tableFrom": "address_areas", + "tableTo": "address_zones", + "schemaTo": "mf", + "columnsFrom": [ + "zone_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.address_zones": { + "name": "address_zones", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "address_zones_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "zone_name": { + "name": "zone_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "added_at": { + "name": "added_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.addresses": { + "name": "addresses", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "addresses_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "phone": { + "name": "phone", + "type": "varchar(15)", + "primaryKey": false, + "notNull": true + }, + "address_line1": { + "name": "address_line1", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "address_line2": { + "name": "address_line2", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "city": { + "name": "city", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "state": { + "name": "state", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "pincode": { + "name": "pincode", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "is_default": { + "name": "is_default", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "latitude": { + "name": "latitude", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "longitude": { + "name": "longitude", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "admin_latitude": { + "name": "admin_latitude", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "admin_longitude": { + "name": "admin_longitude", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "zone_id": { + "name": "zone_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "addresses_user_id_users_id_fk": { + "name": "addresses_user_id_users_id_fk", + "tableFrom": "addresses", + "tableTo": "users", + "schemaTo": "mf", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "addresses_zone_id_address_zones_id_fk": { + "name": "addresses_zone_id_address_zones_id_fk", + "tableFrom": "addresses", + "tableTo": "address_zones", + "schemaTo": "mf", + "columnsFrom": [ + "zone_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.cart_items": { + "name": "cart_items", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "cart_items_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "product_id": { + "name": "product_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "quantity": { + "name": "quantity", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": true + }, + "added_at": { + "name": "added_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "cart_items_user_id_users_id_fk": { + "name": "cart_items_user_id_users_id_fk", + "tableFrom": "cart_items", + "tableTo": "users", + "schemaTo": "mf", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "cart_items_product_id_product_info_id_fk": { + "name": "cart_items_product_id_product_info_id_fk", + "tableFrom": "cart_items", + "tableTo": "product_info", + "schemaTo": "mf", + "columnsFrom": [ + "product_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_user_product": { + "name": "unique_user_product", + "nullsNotDistinct": false, + "columns": [ + "user_id", + "product_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.complaints": { + "name": "complaints", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "complaints_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "order_id": { + "name": "order_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "complaint_body": { + "name": "complaint_body", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "images": { + "name": "images", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "response": { + "name": "response", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "is_resolved": { + "name": "is_resolved", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "complaints_user_id_users_id_fk": { + "name": "complaints_user_id_users_id_fk", + "tableFrom": "complaints", + "tableTo": "users", + "schemaTo": "mf", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "complaints_order_id_orders_id_fk": { + "name": "complaints_order_id_orders_id_fk", + "tableFrom": "complaints", + "tableTo": "orders", + "schemaTo": "mf", + "columnsFrom": [ + "order_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.coupon_applicable_products": { + "name": "coupon_applicable_products", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "coupon_applicable_products_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "coupon_id": { + "name": "coupon_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "product_id": { + "name": "product_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "coupon_applicable_products_coupon_id_coupons_id_fk": { + "name": "coupon_applicable_products_coupon_id_coupons_id_fk", + "tableFrom": "coupon_applicable_products", + "tableTo": "coupons", + "schemaTo": "mf", + "columnsFrom": [ + "coupon_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "coupon_applicable_products_product_id_product_info_id_fk": { + "name": "coupon_applicable_products_product_id_product_info_id_fk", + "tableFrom": "coupon_applicable_products", + "tableTo": "product_info", + "schemaTo": "mf", + "columnsFrom": [ + "product_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_coupon_product": { + "name": "unique_coupon_product", + "nullsNotDistinct": false, + "columns": [ + "coupon_id", + "product_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.coupon_applicable_users": { + "name": "coupon_applicable_users", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "coupon_applicable_users_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "coupon_id": { + "name": "coupon_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "coupon_applicable_users_coupon_id_coupons_id_fk": { + "name": "coupon_applicable_users_coupon_id_coupons_id_fk", + "tableFrom": "coupon_applicable_users", + "tableTo": "coupons", + "schemaTo": "mf", + "columnsFrom": [ + "coupon_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "coupon_applicable_users_user_id_users_id_fk": { + "name": "coupon_applicable_users_user_id_users_id_fk", + "tableFrom": "coupon_applicable_users", + "tableTo": "users", + "schemaTo": "mf", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_coupon_user": { + "name": "unique_coupon_user", + "nullsNotDistinct": false, + "columns": [ + "coupon_id", + "user_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.coupon_usage": { + "name": "coupon_usage", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "coupon_usage_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "coupon_id": { + "name": "coupon_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "order_id": { + "name": "order_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "order_item_id": { + "name": "order_item_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "used_at": { + "name": "used_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "coupon_usage_user_id_users_id_fk": { + "name": "coupon_usage_user_id_users_id_fk", + "tableFrom": "coupon_usage", + "tableTo": "users", + "schemaTo": "mf", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "coupon_usage_coupon_id_coupons_id_fk": { + "name": "coupon_usage_coupon_id_coupons_id_fk", + "tableFrom": "coupon_usage", + "tableTo": "coupons", + "schemaTo": "mf", + "columnsFrom": [ + "coupon_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "coupon_usage_order_id_orders_id_fk": { + "name": "coupon_usage_order_id_orders_id_fk", + "tableFrom": "coupon_usage", + "tableTo": "orders", + "schemaTo": "mf", + "columnsFrom": [ + "order_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "coupon_usage_order_item_id_order_items_id_fk": { + "name": "coupon_usage_order_item_id_order_items_id_fk", + "tableFrom": "coupon_usage", + "tableTo": "order_items", + "schemaTo": "mf", + "columnsFrom": [ + "order_item_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.coupons": { + "name": "coupons", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "coupons_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "coupon_code": { + "name": "coupon_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "is_user_based": { + "name": "is_user_based", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "discount_percent": { + "name": "discount_percent", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "flat_discount": { + "name": "flat_discount", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "min_order": { + "name": "min_order", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "product_ids": { + "name": "product_ids", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "created_by": { + "name": "created_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "max_value": { + "name": "max_value", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "is_apply_for_all": { + "name": "is_apply_for_all", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "valid_till": { + "name": "valid_till", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "max_limit_for_user": { + "name": "max_limit_for_user", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "is_invalidated": { + "name": "is_invalidated", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "exclusive_apply": { + "name": "exclusive_apply", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "coupons_created_by_staff_users_id_fk": { + "name": "coupons_created_by_staff_users_id_fk", + "tableFrom": "coupons", + "tableTo": "staff_users", + "schemaTo": "mf", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_coupon_code": { + "name": "unique_coupon_code", + "nullsNotDistinct": false, + "columns": [ + "coupon_code" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.delivery_slot_info": { + "name": "delivery_slot_info", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "delivery_slot_info_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "delivery_time": { + "name": "delivery_time", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "freeze_time": { + "name": "freeze_time", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "is_flash": { + "name": "is_flash", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "delivery_sequence": { + "name": "delivery_sequence", + "type": "jsonb", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.home_banners": { + "name": "home_banners", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "home_banners_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "image_url": { + "name": "image_url", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "product_ids": { + "name": "product_ids", + "type": "integer[]", + "primaryKey": false, + "notNull": false + }, + "redirect_url": { + "name": "redirect_url", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "serial_num": { + "name": "serial_num", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "last_updated": { + "name": "last_updated", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.key_val_store": { + "name": "key_val_store", + "schema": "mf", + "columns": { + "key": { + "name": "key", + "type": "varchar(255)", + "primaryKey": true, + "notNull": true + }, + "value": { + "name": "value", + "type": "jsonb", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.notif_creds": { + "name": "notif_creds", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "notif_creds_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "token": { + "name": "token", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true + }, + "added_at": { + "name": "added_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "last_verified": { + "name": "last_verified", + "type": "timestamp", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "notif_creds_user_id_users_id_fk": { + "name": "notif_creds_user_id_users_id_fk", + "tableFrom": "notif_creds", + "tableTo": "users", + "schemaTo": "mf", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "notif_creds_token_unique": { + "name": "notif_creds_token_unique", + "nullsNotDistinct": false, + "columns": [ + "token" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.notifications": { + "name": "notifications", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "notifications_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "body": { + "name": "body", + "type": "varchar(512)", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "is_read": { + "name": "is_read", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "notifications_user_id_users_id_fk": { + "name": "notifications_user_id_users_id_fk", + "tableFrom": "notifications", + "tableTo": "users", + "schemaTo": "mf", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.order_items": { + "name": "order_items", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "order_items_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "order_id": { + "name": "order_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "product_id": { + "name": "product_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "quantity": { + "name": "quantity", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "price": { + "name": "price", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": true + }, + "discounted_price": { + "name": "discounted_price", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "is_packaged": { + "name": "is_packaged", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_package_verified": { + "name": "is_package_verified", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + } + }, + "indexes": {}, + "foreignKeys": { + "order_items_order_id_orders_id_fk": { + "name": "order_items_order_id_orders_id_fk", + "tableFrom": "order_items", + "tableTo": "orders", + "schemaTo": "mf", + "columnsFrom": [ + "order_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "order_items_product_id_product_info_id_fk": { + "name": "order_items_product_id_product_info_id_fk", + "tableFrom": "order_items", + "tableTo": "product_info", + "schemaTo": "mf", + "columnsFrom": [ + "product_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.order_status": { + "name": "order_status", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "order_status_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "order_time": { + "name": "order_time", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "order_id": { + "name": "order_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "is_packaged": { + "name": "is_packaged", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_delivered": { + "name": "is_delivered", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_cancelled": { + "name": "is_cancelled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "cancel_reason": { + "name": "cancel_reason", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "is_cancelled_by_admin": { + "name": "is_cancelled_by_admin", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "payment_state": { + "name": "payment_state", + "type": "payment_status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "cancellation_user_notes": { + "name": "cancellation_user_notes", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "cancellation_admin_notes": { + "name": "cancellation_admin_notes", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "cancellation_reviewed": { + "name": "cancellation_reviewed", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "cancellation_reviewed_at": { + "name": "cancellation_reviewed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "refund_coupon_id": { + "name": "refund_coupon_id", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "order_status_user_id_users_id_fk": { + "name": "order_status_user_id_users_id_fk", + "tableFrom": "order_status", + "tableTo": "users", + "schemaTo": "mf", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "order_status_order_id_orders_id_fk": { + "name": "order_status_order_id_orders_id_fk", + "tableFrom": "order_status", + "tableTo": "orders", + "schemaTo": "mf", + "columnsFrom": [ + "order_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "order_status_refund_coupon_id_coupons_id_fk": { + "name": "order_status_refund_coupon_id_coupons_id_fk", + "tableFrom": "order_status", + "tableTo": "coupons", + "schemaTo": "mf", + "columnsFrom": [ + "refund_coupon_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.orders": { + "name": "orders", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "orders_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "address_id": { + "name": "address_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "slot_id": { + "name": "slot_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "is_cod": { + "name": "is_cod", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_online_payment": { + "name": "is_online_payment", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "payment_info_id": { + "name": "payment_info_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "total_amount": { + "name": "total_amount", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": true + }, + "delivery_charge": { + "name": "delivery_charge", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": true, + "default": "'0'" + }, + "readable_id": { + "name": "readable_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "admin_notes": { + "name": "admin_notes", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "user_notes": { + "name": "user_notes", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "order_group_id": { + "name": "order_group_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "order_group_proportion": { + "name": "order_group_proportion", + "type": "numeric(10, 4)", + "primaryKey": false, + "notNull": false + }, + "is_flash_delivery": { + "name": "is_flash_delivery", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "orders_user_id_users_id_fk": { + "name": "orders_user_id_users_id_fk", + "tableFrom": "orders", + "tableTo": "users", + "schemaTo": "mf", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "orders_address_id_addresses_id_fk": { + "name": "orders_address_id_addresses_id_fk", + "tableFrom": "orders", + "tableTo": "addresses", + "schemaTo": "mf", + "columnsFrom": [ + "address_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "orders_slot_id_delivery_slot_info_id_fk": { + "name": "orders_slot_id_delivery_slot_info_id_fk", + "tableFrom": "orders", + "tableTo": "delivery_slot_info", + "schemaTo": "mf", + "columnsFrom": [ + "slot_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "orders_payment_info_id_payment_info_id_fk": { + "name": "orders_payment_info_id_payment_info_id_fk", + "tableFrom": "orders", + "tableTo": "payment_info", + "schemaTo": "mf", + "columnsFrom": [ + "payment_info_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.payment_info": { + "name": "payment_info", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "payment_info_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "status": { + "name": "status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "gateway": { + "name": "gateway", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "order_id": { + "name": "order_id", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "token": { + "name": "token", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "merchant_order_id": { + "name": "merchant_order_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "payload": { + "name": "payload", + "type": "jsonb", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "payment_info_merchant_order_id_unique": { + "name": "payment_info_merchant_order_id_unique", + "nullsNotDistinct": false, + "columns": [ + "merchant_order_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.payments": { + "name": "payments", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "payments_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "status": { + "name": "status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "gateway": { + "name": "gateway", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "order_id": { + "name": "order_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "token": { + "name": "token", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "merchant_order_id": { + "name": "merchant_order_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "payload": { + "name": "payload", + "type": "jsonb", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "payments_order_id_orders_id_fk": { + "name": "payments_order_id_orders_id_fk", + "tableFrom": "payments", + "tableTo": "orders", + "schemaTo": "mf", + "columnsFrom": [ + "order_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "payments_merchant_order_id_unique": { + "name": "payments_merchant_order_id_unique", + "nullsNotDistinct": false, + "columns": [ + "merchant_order_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.product_categories": { + "name": "product_categories", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "product_categories_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.product_group_info": { + "name": "product_group_info", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "product_group_info_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "group_name": { + "name": "group_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.product_group_membership": { + "name": "product_group_membership", + "schema": "mf", + "columns": { + "product_id": { + "name": "product_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "group_id": { + "name": "group_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "added_at": { + "name": "added_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "product_group_membership_product_id_product_info_id_fk": { + "name": "product_group_membership_product_id_product_info_id_fk", + "tableFrom": "product_group_membership", + "tableTo": "product_info", + "schemaTo": "mf", + "columnsFrom": [ + "product_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "product_group_membership_group_id_product_group_info_id_fk": { + "name": "product_group_membership_group_id_product_group_info_id_fk", + "tableFrom": "product_group_membership", + "tableTo": "product_group_info", + "schemaTo": "mf", + "columnsFrom": [ + "group_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "product_group_membership_pk": { + "name": "product_group_membership_pk", + "nullsNotDistinct": false, + "columns": [ + "product_id", + "group_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.product_info": { + "name": "product_info", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "product_info_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "short_description": { + "name": "short_description", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "long_description": { + "name": "long_description", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "unit_id": { + "name": "unit_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "price": { + "name": "price", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": true + }, + "market_price": { + "name": "market_price", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "images": { + "name": "images", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "is_out_of_stock": { + "name": "is_out_of_stock", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_suspended": { + "name": "is_suspended", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_flash_available": { + "name": "is_flash_available", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "flash_price": { + "name": "flash_price", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "increment_step": { + "name": "increment_step", + "type": "real", + "primaryKey": false, + "notNull": true, + "default": 1 + }, + "product_quantity": { + "name": "product_quantity", + "type": "real", + "primaryKey": false, + "notNull": true, + "default": 1 + }, + "store_id": { + "name": "store_id", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "product_info_unit_id_units_id_fk": { + "name": "product_info_unit_id_units_id_fk", + "tableFrom": "product_info", + "tableTo": "units", + "schemaTo": "mf", + "columnsFrom": [ + "unit_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "product_info_store_id_store_info_id_fk": { + "name": "product_info_store_id_store_info_id_fk", + "tableFrom": "product_info", + "tableTo": "store_info", + "schemaTo": "mf", + "columnsFrom": [ + "store_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.product_reviews": { + "name": "product_reviews", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "product_reviews_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "product_id": { + "name": "product_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "review_body": { + "name": "review_body", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "image_urls": { + "name": "image_urls", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "review_time": { + "name": "review_time", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "ratings": { + "name": "ratings", + "type": "real", + "primaryKey": false, + "notNull": true + }, + "admin_response": { + "name": "admin_response", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "admin_response_images": { + "name": "admin_response_images", + "type": "jsonb", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "product_reviews_user_id_users_id_fk": { + "name": "product_reviews_user_id_users_id_fk", + "tableFrom": "product_reviews", + "tableTo": "users", + "schemaTo": "mf", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "product_reviews_product_id_product_info_id_fk": { + "name": "product_reviews_product_id_product_info_id_fk", + "tableFrom": "product_reviews", + "tableTo": "product_info", + "schemaTo": "mf", + "columnsFrom": [ + "product_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "rating_check": { + "name": "rating_check", + "value": "\"mf\".\"product_reviews\".\"ratings\" >= 1 AND \"mf\".\"product_reviews\".\"ratings\" <= 5" + } + }, + "isRLSEnabled": false + }, + "mf.product_slots": { + "name": "product_slots", + "schema": "mf", + "columns": { + "product_id": { + "name": "product_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "slot_id": { + "name": "slot_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "product_slots_product_id_product_info_id_fk": { + "name": "product_slots_product_id_product_info_id_fk", + "tableFrom": "product_slots", + "tableTo": "product_info", + "schemaTo": "mf", + "columnsFrom": [ + "product_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "product_slots_slot_id_delivery_slot_info_id_fk": { + "name": "product_slots_slot_id_delivery_slot_info_id_fk", + "tableFrom": "product_slots", + "tableTo": "delivery_slot_info", + "schemaTo": "mf", + "columnsFrom": [ + "slot_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "product_slot_pk": { + "name": "product_slot_pk", + "nullsNotDistinct": false, + "columns": [ + "product_id", + "slot_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.product_tag_info": { + "name": "product_tag_info", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "product_tag_info_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "tag_name": { + "name": "tag_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "tag_description": { + "name": "tag_description", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "image_url": { + "name": "image_url", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "is_dashboard_tag": { + "name": "is_dashboard_tag", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "product_tag_info_tag_name_unique": { + "name": "product_tag_info_tag_name_unique", + "nullsNotDistinct": false, + "columns": [ + "tag_name" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.product_tags": { + "name": "product_tags", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "product_tags_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "product_id": { + "name": "product_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "tag_id": { + "name": "tag_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "assigned_at": { + "name": "assigned_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "product_tags_product_id_product_info_id_fk": { + "name": "product_tags_product_id_product_info_id_fk", + "tableFrom": "product_tags", + "tableTo": "product_info", + "schemaTo": "mf", + "columnsFrom": [ + "product_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "product_tags_tag_id_product_tag_info_id_fk": { + "name": "product_tags_tag_id_product_tag_info_id_fk", + "tableFrom": "product_tags", + "tableTo": "product_tag_info", + "schemaTo": "mf", + "columnsFrom": [ + "tag_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_product_tag": { + "name": "unique_product_tag", + "nullsNotDistinct": false, + "columns": [ + "product_id", + "tag_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.refunds": { + "name": "refunds", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "refunds_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "order_id": { + "name": "order_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "refund_amount": { + "name": "refund_amount", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "refund_status": { + "name": "refund_status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false, + "default": "'none'" + }, + "merchant_refund_id": { + "name": "merchant_refund_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "refund_processed_at": { + "name": "refund_processed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "refunds_order_id_orders_id_fk": { + "name": "refunds_order_id_orders_id_fk", + "tableFrom": "refunds", + "tableTo": "orders", + "schemaTo": "mf", + "columnsFrom": [ + "order_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.reserved_coupons": { + "name": "reserved_coupons", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "reserved_coupons_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "secret_code": { + "name": "secret_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "coupon_code": { + "name": "coupon_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "discount_percent": { + "name": "discount_percent", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "flat_discount": { + "name": "flat_discount", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "min_order": { + "name": "min_order", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "product_ids": { + "name": "product_ids", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "max_value": { + "name": "max_value", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "valid_till": { + "name": "valid_till", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "max_limit_for_user": { + "name": "max_limit_for_user", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "exclusive_apply": { + "name": "exclusive_apply", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_redeemed": { + "name": "is_redeemed", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "redeemed_by": { + "name": "redeemed_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "redeemed_at": { + "name": "redeemed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "created_by": { + "name": "created_by", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "reserved_coupons_redeemed_by_users_id_fk": { + "name": "reserved_coupons_redeemed_by_users_id_fk", + "tableFrom": "reserved_coupons", + "tableTo": "users", + "schemaTo": "mf", + "columnsFrom": [ + "redeemed_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "reserved_coupons_created_by_staff_users_id_fk": { + "name": "reserved_coupons_created_by_staff_users_id_fk", + "tableFrom": "reserved_coupons", + "tableTo": "staff_users", + "schemaTo": "mf", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "reserved_coupons_secret_code_unique": { + "name": "reserved_coupons_secret_code_unique", + "nullsNotDistinct": false, + "columns": [ + "secret_code" + ] + }, + "unique_secret_code": { + "name": "unique_secret_code", + "nullsNotDistinct": false, + "columns": [ + "secret_code" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.special_deals": { + "name": "special_deals", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "special_deals_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "product_id": { + "name": "product_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "quantity": { + "name": "quantity", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": true + }, + "price": { + "name": "price", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": true + }, + "valid_till": { + "name": "valid_till", + "type": "timestamp", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "special_deals_product_id_product_info_id_fk": { + "name": "special_deals_product_id_product_info_id_fk", + "tableFrom": "special_deals", + "tableTo": "product_info", + "schemaTo": "mf", + "columnsFrom": [ + "product_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.staff_permissions": { + "name": "staff_permissions", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "staff_permissions_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "permission_name": { + "name": "permission_name", + "type": "staff_permission", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_permission_name": { + "name": "unique_permission_name", + "nullsNotDistinct": false, + "columns": [ + "permission_name" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.staff_role_permissions": { + "name": "staff_role_permissions", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "staff_role_permissions_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "staff_role_id": { + "name": "staff_role_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "staff_permission_id": { + "name": "staff_permission_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "staff_role_permissions_staff_role_id_staff_roles_id_fk": { + "name": "staff_role_permissions_staff_role_id_staff_roles_id_fk", + "tableFrom": "staff_role_permissions", + "tableTo": "staff_roles", + "schemaTo": "mf", + "columnsFrom": [ + "staff_role_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "staff_role_permissions_staff_permission_id_staff_permissions_id_fk": { + "name": "staff_role_permissions_staff_permission_id_staff_permissions_id_fk", + "tableFrom": "staff_role_permissions", + "tableTo": "staff_permissions", + "schemaTo": "mf", + "columnsFrom": [ + "staff_permission_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_role_permission": { + "name": "unique_role_permission", + "nullsNotDistinct": false, + "columns": [ + "staff_role_id", + "staff_permission_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.staff_roles": { + "name": "staff_roles", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "staff_roles_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "role_name": { + "name": "role_name", + "type": "staff_role", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_role_name": { + "name": "unique_role_name", + "nullsNotDistinct": false, + "columns": [ + "role_name" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.staff_users": { + "name": "staff_users", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "staff_users_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "password": { + "name": "password", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "staff_role_id": { + "name": "staff_role_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "staff_users_staff_role_id_staff_roles_id_fk": { + "name": "staff_users_staff_role_id_staff_roles_id_fk", + "tableFrom": "staff_users", + "tableTo": "staff_roles", + "schemaTo": "mf", + "columnsFrom": [ + "staff_role_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.store_info": { + "name": "store_info", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "store_info_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "image_url": { + "name": "image_url", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "owner": { + "name": "owner", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "store_info_owner_staff_users_id_fk": { + "name": "store_info_owner_staff_users_id_fk", + "tableFrom": "store_info", + "tableTo": "staff_users", + "schemaTo": "mf", + "columnsFrom": [ + "owner" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.units": { + "name": "units", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "units_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "short_notation": { + "name": "short_notation", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "full_name": { + "name": "full_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_short_notation": { + "name": "unique_short_notation", + "nullsNotDistinct": false, + "columns": [ + "short_notation" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.upload_url_status": { + "name": "upload_url_status", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "upload_url_status_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "key": { + "name": "key", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "upload_status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.user_creds": { + "name": "user_creds", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "user_creds_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "user_password": { + "name": "user_password", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "user_creds_user_id_users_id_fk": { + "name": "user_creds_user_id_users_id_fk", + "tableFrom": "user_creds", + "tableTo": "users", + "schemaTo": "mf", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.user_details": { + "name": "user_details", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "user_details_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "bio": { + "name": "bio", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "date_of_birth": { + "name": "date_of_birth", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "gender": { + "name": "gender", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "occupation": { + "name": "occupation", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "profile_image": { + "name": "profile_image", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "is_suspended": { + "name": "is_suspended", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "user_details_user_id_users_id_fk": { + "name": "user_details_user_id_users_id_fk", + "tableFrom": "user_details", + "tableTo": "users", + "schemaTo": "mf", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "user_details_user_id_unique": { + "name": "user_details_user_id_unique", + "nullsNotDistinct": false, + "columns": [ + "user_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.users": { + "name": "users", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "users_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "mobile": { + "name": "mobile", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_email": { + "name": "unique_email", + "nullsNotDistinct": false, + "columns": [ + "email" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mf.vendor_snippets": { + "name": "vendor_snippets", + "schema": "mf", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "vendor_snippets_id_seq", + "schema": "mf", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "snippet_code": { + "name": "snippet_code", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "slot_id": { + "name": "slot_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "is_permanent": { + "name": "is_permanent", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "product_ids": { + "name": "product_ids", + "type": "integer[]", + "primaryKey": false, + "notNull": true + }, + "valid_till": { + "name": "valid_till", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "vendor_snippets_slot_id_delivery_slot_info_id_fk": { + "name": "vendor_snippets_slot_id_delivery_slot_info_id_fk", + "tableFrom": "vendor_snippets", + "tableTo": "delivery_slot_info", + "schemaTo": "mf", + "columnsFrom": [ + "slot_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "vendor_snippets_snippet_code_unique": { + "name": "vendor_snippets_snippet_code_unique", + "nullsNotDistinct": false, + "columns": [ + "snippet_code" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + } + }, + "enums": { + "public.payment_status": { + "name": "payment_status", + "schema": "public", + "values": [ + "pending", + "success", + "cod", + "failed" + ] + }, + "public.staff_permission": { + "name": "staff_permission", + "schema": "public", + "values": [ + "crud_product", + "make_coupon", + "crud_staff_users" + ] + }, + "public.staff_role": { + "name": "staff_role", + "schema": "public", + "values": [ + "super_admin", + "admin", + "marketer", + "delivery_staff" + ] + }, + "public.upload_status": { + "name": "upload_status", + "schema": "public", + "values": [ + "pending", + "claimed" + ] + } + }, + "schemas": {}, + "sequences": {}, + "roles": {}, + "policies": {}, + "views": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} \ No newline at end of file diff --git a/apps/backend/drizzle/meta/_journal.json b/apps/backend/drizzle/meta/_journal.json index 9236798..b27fba0 100644 --- a/apps/backend/drizzle/meta/_journal.json +++ b/apps/backend/drizzle/meta/_journal.json @@ -477,6 +477,13 @@ "when": 1769280779210, "tag": "0067_messy_earthquake", "breakpoints": true + }, + { + "idx": 68, + "version": "7", + "when": 1769709890336, + "tag": "0068_colossal_magma", + "breakpoints": true } ] } \ No newline at end of file diff --git a/apps/backend/src/db/schema.ts b/apps/backend/src/db/schema.ts index 5eaa87d..d9410c0 100755 --- a/apps/backend/src/db/schema.ts +++ b/apps/backend/src/db/schema.ts @@ -48,6 +48,8 @@ export const addresses = mf.table('addresses', { isDefault: boolean('is_default').notNull().default(false), latitude: real('latitude'), longitude: real('longitude'), + adminLatitude: real('admin_latitude'), + adminLongitude: real('admin_longitude'), zoneId: integer('zone_id').references(() => addressZones.id), createdAt: timestamp('created_at').notNull().defaultNow(), }); @@ -642,4 +644,4 @@ export const staffPermissionsRelations = relations(staffPermissions, ({ many }) export const staffRolePermissionsRelations = relations(staffRolePermissions, ({ one }) => ({ role: one(staffRoles, { fields: [staffRolePermissions.staffRoleId], references: [staffRoles.id] }), permission: one(staffPermissions, { fields: [staffRolePermissions.staffPermissionId], references: [staffPermissions.id] }), -})); \ No newline at end of file +})); diff --git a/apps/backend/src/trpc/admin-apis/order.ts b/apps/backend/src/trpc/admin-apis/order.ts index c7baba7..0c68bf8 100644 --- a/apps/backend/src/trpc/admin-apis/order.ts +++ b/apps/backend/src/trpc/admin-apis/order.ts @@ -519,9 +519,9 @@ export const orderRouter = router({ }, ${order.address.city}, ${order.address.state} - ${ order.address.pincode }, Phone: ${order.address.phone}`, - addressId: order.addressId, - latitude: order.address.latitude, - longitude: order.address.longitude, + addressId: order.addressId, + latitude: order.address.adminLatitude ?? order.address.latitude, + longitude: order.address.adminLongitude ?? order.address.longitude, totalAmount: parseFloat(order.totalAmount), items, deliveryTime: order.slot?.deliveryTime.toISOString() || null, @@ -646,8 +646,8 @@ export const orderRouter = router({ const result = await db .update(addresses) .set({ - latitude, - longitude, + adminLatitude: latitude, + adminLongitude: longitude, }) .where(eq(addresses.id, addressId)) .returning(); @@ -793,9 +793,9 @@ export const orderRouter = router({ }, ${order.address.city}, ${order.address.state} - ${ order.address.pincode }, Phone: ${order.address.phone}`, - addressId: order.addressId, - latitude: order.address.latitude, - longitude: order.address.longitude, + addressId: order.addressId, + latitude: order.address.adminLatitude ?? order.address.latitude, + longitude: order.address.adminLongitude ?? order.address.longitude, totalAmount: parseFloat(order.totalAmount), deliveryCharge: parseFloat(order.deliveryCharge || "0"), items, diff --git a/packages/ui/index.ts b/packages/ui/index.ts index b448e91..e5f5a1f 100755 --- a/packages/ui/index.ts +++ b/packages/ui/index.ts @@ -63,8 +63,8 @@ const isDevMode = Constants.executionEnvironment !== "standalone"; // const BASE_API_URL = API_URL; // const BASE_API_URL = 'http://10.0.2.2:4000'; // const BASE_API_URL = 'http://192.168.100.101:4000'; -// const BASE_API_URL = 'http://192.168.1.14:4000'; -let BASE_API_URL = "https://mf.freshyo.in"; +const BASE_API_URL = 'http://192.168.1.14:4000'; +// let BASE_API_URL = "https://mf.freshyo.in"; // let BASE_API_URL = 'http://192.168.100.103:4000'; // let BASE_API_URL = 'http://192.168.29.219:4000';