40 lines
858 B
TypeScript
40 lines
858 B
TypeScript
import fs from 'fs'
|
|
import path from 'path'
|
|
|
|
const DATA_DIR = path.join(process.cwd(), 'data')
|
|
const CART_FILE_PATH = path.join(DATA_DIR, 'cart.json')
|
|
|
|
export interface CartItem {
|
|
id: number
|
|
title: string
|
|
price: number
|
|
quantity: number
|
|
}
|
|
|
|
const ensureDataDir = () => {
|
|
if (!fs.existsSync(DATA_DIR)) {
|
|
fs.mkdirSync(DATA_DIR, { recursive: true })
|
|
}
|
|
}
|
|
|
|
export const saveCart = (cartItems: CartItem[]): void => {
|
|
ensureDataDir()
|
|
const cartData = JSON.stringify(cartItems, null, 2)
|
|
fs.writeFileSync(CART_FILE_PATH, cartData)
|
|
}
|
|
|
|
export const getCart = (): CartItem[] => {
|
|
ensureDataDir()
|
|
if (!fs.existsSync(CART_FILE_PATH)) {
|
|
return []
|
|
}
|
|
const cartData = fs.readFileSync(CART_FILE_PATH, 'utf-8')
|
|
return JSON.parse(cartData)
|
|
}
|
|
|
|
export const clearCart = (): void => {
|
|
ensureDataDir()
|
|
fs.writeFileSync(CART_FILE_PATH, '[]')
|
|
}
|
|
|