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
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)
|
|
})
|
|
|