first commit of refactor
This commit is contained in:
82
backend/controllers/AddressController.js
Normal file
82
backend/controllers/AddressController.js
Normal file
@@ -0,0 +1,82 @@
|
||||
import * as AddressModel from '../models/AddressModel.js';
|
||||
|
||||
/**
|
||||
* Create a new address
|
||||
*/
|
||||
export async function create(req, res) {
|
||||
const { address, label } = req.body;
|
||||
const user_id = req.user_id; // From authenticate middleware
|
||||
|
||||
console.log(`User ${user_id} creating address: ${address}`);
|
||||
|
||||
if (!address) {
|
||||
return res.status(400).json({
|
||||
error: 'VALIDATION_ERROR',
|
||||
message: 'Address is required'
|
||||
});
|
||||
}
|
||||
|
||||
// Validation: ETH address format
|
||||
if (!/^0x[a-fA-F0-9]{40}$/.test(address)) {
|
||||
return res.status(400).json({
|
||||
error: 'VALIDATION_ERROR',
|
||||
message: 'Invalid Ethereum address format'
|
||||
});
|
||||
}
|
||||
|
||||
try {
|
||||
const newAddress = await AddressModel.create(user_id, address, label || null);
|
||||
console.log(`Address created with ID: ${newAddress.id}`);
|
||||
return res.status(201).json(newAddress);
|
||||
} catch (error) {
|
||||
// Handle duplicate address (unique constraint violation)
|
||||
if (error.code === '23505') {
|
||||
return res.status(400).json({
|
||||
error: 'VALIDATION_ERROR',
|
||||
message: 'You are already tracking this address'
|
||||
});
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export async function list(req, res) {
|
||||
const user_id = req.user_id; // From authenticate middleware
|
||||
|
||||
console.log(`User ${user_id} listing addresses`);
|
||||
|
||||
const addresses = await AddressModel.listByUser(user_id);
|
||||
|
||||
console.log(`Found ${addresses.length} addresses for user`);
|
||||
|
||||
return res.json(addresses);
|
||||
}
|
||||
|
||||
export async function remove(req, res) {
|
||||
const addressId = parseInt(req.params.addressId);
|
||||
const user_id = req.user_id; // From authenticate middleware
|
||||
|
||||
console.log(`User ${user_id} deleting address ID: ${addressId}`);
|
||||
|
||||
if (isNaN(addressId)) {
|
||||
return res.status(400).json({
|
||||
error: 'VALIDATION_ERROR',
|
||||
message: 'Invalid address ID'
|
||||
});
|
||||
}
|
||||
|
||||
const deleted = await AddressModel.remove(addressId, user_id);
|
||||
|
||||
if (!deleted) {
|
||||
console.log(`Address ${addressId} not found or not owned by user`);
|
||||
return res.status(404).json({
|
||||
error: 'NOT_FOUND',
|
||||
message: 'Address not found'
|
||||
});
|
||||
}
|
||||
|
||||
console.log(`Address ${addressId} deleted`);
|
||||
return res.status(204).send();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user