From: charleswrayjr Date: Fri, 12 Sep 2025 02:11:12 +0000 (-0500) Subject: Cleaning up the address.model.js file. X-Git-Url: https://git.phasecustomsoft.com/static/gitweb.css?a=commitdiff_plain;h=9cd02ddc56792c8fe6ccec5c0d505147cb175482;p=phs-api.git Cleaning up the address.model.js file. --- diff --git a/src/models/address.model.js b/src/models/address.model.js index 76ea918..0ea8662 100644 --- a/src/models/address.model.js +++ b/src/models/address.model.js @@ -2,7 +2,7 @@ * @file Address model for phase.addresses table */ -const { Model, ValidationError } = require('./model'); +const { Model, NotFoundError, ValidationError, FailedToCreateError } = require( './model' ); /** * @typedef {Object} Address @@ -28,8 +28,8 @@ class Address extends Model { * Create an Address instance * @param {Partial
} [props] - Address properties */ - constructor(props) { - super(props); + constructor( props ) { + super( props ); this.table = 'phase.addresses'; this.prepend = 'a'; this.default_columns = [ @@ -38,19 +38,34 @@ class Address extends Model { ]; this.update_exclude_columns = ['id', 'created_at', 'is_deleted', 'deleted_at', 'deleted_by_id']; this.base_query = ` - SELECT a.id, a.street_1, a.street_2, a.city, a.state, a.zip_code, - a.created_by_id, a.created_at, a.is_deleted, a.deleted_by_id, a.deleted_at + SELECT a.id, + a.street_1, + a.street_2, + a.city, + a.state, + a.zip_code, + a.created_by_id, + a.created_at, + a.is_deleted, + a.deleted_by_id, + a.deleted_at FROM phase.addresses a WHERE a.is_deleted = false `; this.base_list_query = ` - SELECT a.id, a.street_1, a.street_2, a.city, a.state, a.zip_code, - a.created_by_id, a.created_at - FROM phase.addresses a - WHERE a.is_deleted = false + SELECT a.id, + a.street_1, + a.street_2, + a.city, + a.state, + a.zip_code, + a.created_by_id, + a.created_at + FROM phase.addresses a + WHERE a.is_deleted = false `; this.default_order_by = 'ORDER BY a.zip_code ASC'; - this.instance = _props => new Address(_props); + this.instance = _props => new Address( _props ); } /** @@ -58,20 +73,22 @@ class Address extends Model { * @param {Omit} address_data - Address data * @returns {Promise
} Created address instance * @throws {ValidationError} If required fields are missing + * @throws {FailedToCreateError} If creation fails */ - static async create(address_data) { + static async create( address_data ) { const { street_1, street_2 = null, city, state, zip_code, created_by_id = null } = address_data; if (!street_1 || !city || !state || !zip_code) { - throw new ValidationError('Missing required fields: street_1, city, state, zip_code'); + throw new ValidationError( 'Missing required fields: street_1, city, state, zip_code' ); } const query_str = ` - INSERT INTO phase.addresses (street_1, street_2, city, state, zip_code, created_by_id) - VALUES ($1, $2, $3, $4, $5, $6) RETURNING *; + INSERT INTO phase.addresses (street_1, street_2, city, state, zip_code, created_by_id) + VALUES ($1, $2, $3, $4, $5, $6) + RETURNING *; `; const values = [street_1, street_2, city, state, zip_code, created_by_id]; - const result = await phsdb.query(query_str, values, { plain: true }); - if (!result) throw new ValidationError('Failed to create address'); - return new Address(result); + const result = await phsdb.query( query_str, values, { plain:true } ); + if (!result) throw new FailedToCreateError( 'Failed to create address' ); + return new Address( result ); } /** @@ -79,9 +96,9 @@ class Address extends Model { * @param user_id * @returns {Promise<{user_id: number, address_id: number}>} */ - static async add_user(user_id) { + static async add_user( user_id ) { const done = await require( 'user_address.model' ).add_relation( user_id, this.id ); - if (!done) throw new ValidationError('Failed to add phone number'); + if (!done) throw new ValidationError( 'Failed to add phone number' ); return done; }; @@ -91,37 +108,28 @@ class Address extends Model { * @param {string[]} [excludes] - Fields to exclude from result * @returns {Promise[]} Address instance or null */ - static async find_by_zip_code(zip_code, excludes = []) { + static async find_by_zip_code( zip_code, excludes = [] ) { return await new Address().find_many( { zip_code }, excludes ); - } + }; /** * Soft delete address * @param {number|string} deleted_by_id - ID of user performing deletion * @returns {Promise
} Updated address instance * @throws {ValidationError} If deleted_by_id is invalid + * @throws {NotFoundError} If record not found */ - async soft_delete(deleted_by_id) { - const deleted_by_id_int = parseInt(deleted_by_id, 10); - if (isNaN(deleted_by_id_int)) { - throw new ValidationError('deleted_by_id must be a valid integer'); + async soft_delete( deleted_by_id ) { + const deleted_by_id_int = parseInt( deleted_by_id, 10 ); + if (isNaN( deleted_by_id_int )) { + throw new ValidationError( 'deleted_by_id must be a valid integer' ); } - return await this.update({ - is_deleted: true, - deleted_at: new Date().toISOString(), - deleted_by_id: deleted_by_id_int - }); - } - - /** - * Get the user who created this address - * @returns {Promise} Creator user instance or null - */ - async get_created_by() { - if (!this.created_by_id) return null; - const User = require('./user.model'); - return await new User().find_one({ id: this.created_by_id }, []); - } + return await this.update( { + is_deleted:true, + deleted_at:new Date().toISOString(), + deleted_by_id:deleted_by_id_int + } ); + }; } module.exports = Address; \ No newline at end of file