watering 2

This commit is contained in:
Jake Kasper
2025-09-04 15:13:57 -04:00
parent 610131e5c2
commit 6bf68364ec
6 changed files with 239 additions and 24 deletions

View File

@@ -167,6 +167,15 @@ router.get('/', async (req, res, next) => {
material: item.material,
colorCode: item.color_code,
quantityOwned: item.quantity_owned,
// Sprinkler fields
sprinklerMount: item.sprinkler_mount,
sprinklerHeadType: item.sprinkler_head_type,
sprinklerGpm: item.sprinkler_gpm ? parseFloat(item.sprinkler_gpm) : null,
sprinklerThrowFeet: item.sprinkler_throw_feet ? parseFloat(item.sprinkler_throw_feet) : null,
sprinklerDegrees: item.sprinkler_degrees,
sprinklerLengthFeet: item.sprinkler_length_feet ? parseFloat(item.sprinkler_length_feet) : null,
sprinklerWidthFeet: item.sprinkler_width_feet ? parseFloat(item.sprinkler_width_feet) : null,
sprinklerCoverageSqft: item.sprinkler_coverage_sqft ? parseFloat(item.sprinkler_coverage_sqft) : null,
// General fields
purchaseDate: item.purchase_date,
purchasePrice: parseFloat(item.purchase_price) || null,
@@ -297,7 +306,16 @@ router.get('/:id', validateParams(idParamSchema), async (req, res, next) => {
notes: item.notes,
isActive: item.is_active,
createdAt: item.created_at,
updatedAt: item.updated_at
updatedAt: item.updated_at,
// Sprinkler fields
sprinklerMount: item.sprinkler_mount,
sprinklerHeadType: item.sprinkler_head_type,
sprinklerGpm: item.sprinkler_gpm ? parseFloat(item.sprinkler_gpm) : null,
sprinklerThrowFeet: item.sprinkler_throw_feet ? parseFloat(item.sprinkler_throw_feet) : null,
sprinklerDegrees: item.sprinkler_degrees,
sprinklerLengthFeet: item.sprinkler_length_feet ? parseFloat(item.sprinkler_length_feet) : null,
sprinklerWidthFeet: item.sprinkler_width_feet ? parseFloat(item.sprinkler_width_feet) : null,
sprinklerCoverageSqft: item.sprinkler_coverage_sqft ? parseFloat(item.sprinkler_coverage_sqft) : null
}
}
});
@@ -405,8 +423,9 @@ router.post('/', async (req, res, next) => {
tool_type, working_width_inches,
pump_type, max_gpm, max_psi, power_source,
orifice_size, spray_angle, flow_rate_gpm, droplet_size, spray_pattern, pressure_range_psi, thread_size, material, color_code, quantity_owned,
purchase_date, purchase_price, notes)
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, $28, $29, $30, $31, $32, $33, $34, $35, $36, $37, $38)
purchase_date, purchase_price, notes,
sprinkler_mount, sprinkler_head_type, sprinkler_gpm, sprinkler_throw_feet, sprinkler_degrees, sprinkler_length_feet, sprinkler_width_feet)
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, $28, $29, $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $40, $41, $42, $43, $44, $45)
RETURNING *`,
[
req.user.id, equipmentTypeId, finalCategoryId, customName, manufacturer, model,
@@ -416,7 +435,8 @@ router.post('/', async (req, res, next) => {
toolType, workingWidthInches,
pumpType, maxGpm, maxPsi, powerSource,
orificeSize, sprayAngle, flowRateGpm, dropletSize, sprayPattern, pressureRangePsi, threadSize, material, colorCode, quantityOwned,
purchaseDate, purchasePrice, notes
purchaseDate, purchasePrice, notes,
sprinklerMount || null, sprinklerHeadType || null, sprinklerGpm || null, sprinklerThrowFeet || null, sprinklerDegrees || null, sprinklerLengthFeet || null, sprinklerWidthFeet || null
]
);
@@ -533,6 +553,7 @@ router.put('/:id', validateParams(idParamSchema), async (req, res, next) => {
pump_type = $21, max_gpm = $22, max_psi = $23, power_source = $24,
orifice_size = $25, spray_angle = $26, flow_rate_gpm = $27, droplet_size = $28, spray_pattern = $29, pressure_range_psi = $30, thread_size = $31, material = $32, color_code = $33, quantity_owned = $34,
purchase_date = $35, purchase_price = $36, notes = $37, is_active = $38,
sprinkler_mount = $40, sprinkler_head_type = $41, sprinkler_gpm = $42, sprinkler_throw_feet = $43, sprinkler_degrees = $44, sprinkler_length_feet = $45, sprinkler_width_feet = $46,
updated_at = CURRENT_TIMESTAMP
WHERE id = $39
RETURNING *`,
@@ -545,7 +566,8 @@ router.put('/:id', validateParams(idParamSchema), async (req, res, next) => {
pumpType, maxGpm, maxPsi, powerSource,
orificeSize, sprayAngle, flowRateGpm, dropletSize, sprayPattern, pressureRangePsi, threadSize, material, colorCode, quantityOwned,
purchaseDate, purchasePrice, notes, isActive !== undefined ? isActive : true,
equipmentId
equipmentId,
sprinklerMount || null, sprinklerHeadType || null, sprinklerGpm || null, sprinklerThrowFeet || null, sprinklerDegrees || null, sprinklerLengthFeet || null, sprinklerWidthFeet || null
]
);
@@ -645,4 +667,4 @@ router.delete('/:id', validateParams(idParamSchema), async (req, res, next) => {
}
});
module.exports = router;
module.exports = router;

View File

@@ -91,15 +91,14 @@ router.post('/plans/:id/points', async (req,res,next)=>{
const ins = await pool.query(
`INSERT INTO watering_plan_points
(plan_id, sequence, lat, lng, duration_minutes, sprinkler_mount, sprinkler_head_type,
sprinkler_gpm, sprinkler_throw_feet, sprinkler_degrees, sprinkler_length_feet, sprinkler_width_feet, coverage_sqft)
VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13) RETURNING *`,
sprinkler_gpm, sprinkler_throw_feet, sprinkler_degrees, sprinkler_length_feet, sprinkler_width_feet, coverage_sqft, sprinkler_heading_degrees)
VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14) RETURNING *`,
[planId, sequence, payload.lat, payload.lng, payload.durationMinutes||0, payload.mountType||null,
payload.sprinklerHeadType||null, payload.gpm||null, payload.throwFeet||null, payload.degrees||null,
payload.lengthFeet||null, payload.widthFeet||null, coverage]
payload.lengthFeet||null, payload.widthFeet||null, coverage, payload.headingDegrees||null]
);
res.status(201).json({ success:true, data:{ point: ins.rows[0] }});
} catch (e) { next(e); }
});
module.exports = router;