You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

86 lines
2.2 KiB

/**
* Add product to cart for testing
*/
import { drizzle } from 'drizzle-orm/postgres-js'
import postgres from 'postgres'
import * as schema from '../server/database/schema'
import { eq } from 'drizzle-orm'
const { products, carts, cartItems, users } = schema
const connectionString = process.env.DATABASE_URL || 'postgresql://dev:dev_password_change_me@localhost:5432/experimenta_dev'
const client = postgres(connectionString)
const db = drizzle(client, { schema })
async function addToCart() {
console.log('🛒 Adding products to cart for test user...')
// Get any user (the first one)
const user = await db.query.users.findFirst()
if (!user) {
console.error('❌ No users found. Please login first.')
await client.end()
process.exit(1)
}
console.log(` ✓ Found user: ${user.email} (ID: ${user.id})`)
// Get or create cart
let cart = await db.query.carts.findFirst({
where: eq(carts.userId, user.id),
})
if (!cart) {
const [newCart] = await db.insert(carts).values({ userId: user.id }).returning()
cart = newCart
console.log(` ✓ Created cart: ${cart.id}`)
} else {
console.log(` ✓ Found cart: ${cart.id}`)
}
// Get first product
const product = await db.query.products.findFirst({
where: eq(products.active, true),
})
if (!product) {
console.error('❌ No active products found.')
await client.end()
process.exit(1)
}
console.log(` ✓ Found product: ${product.name} (${product.price}€)`)
// Check if item already exists
const existingItem = await db.query.cartItems.findFirst({
where: (item, { and, eq }) => and(eq(item.cartId, cart.id), eq(item.productId, product.id)),
})
if (existingItem) {
console.log(` ℹ Product already in cart, skipping...`)
console.log(`✅ Cart ready for checkout!`)
await client.end()
return
}
// Add to cart
const [cartItem] = await db
.insert(cartItems)
.values({
cartId: cart.id,
productId: product.id,
quantity: 2,
})
.returning()
console.log(` ✓ Added ${cartItem.quantity}x "${product.name}" to cart`)
console.log(`✅ Cart ready for checkout!`)
await client.end()
}
addToCart().catch((error) => {
console.error('❌ Error:', error)
process.exit(1)
})