From: charleswrayjr Date: Fri, 12 Sep 2025 02:03:55 +0000 (-0500) Subject: Cleaning up the phone_number.model.js file. X-Git-Url: https://git.phasecustomsoft.com/static/gitweb.css?a=commitdiff_plain;h=3f99a2bf8f1e456af7ad5503c92ce19d441bbad4;p=phs-api.git Cleaning up the phone_number.model.js file. --- diff --git a/src/models/user_phone_number.model.js b/src/models/user_phone_number.model.js index 4a00732..f10189c 100644 --- a/src/models/user_phone_number.model.js +++ b/src/models/user_phone_number.model.js @@ -2,7 +2,7 @@ * @file User phone numbers model for phase.user_phone_numbers table */ -const { Model, ValidationError } = require( './model' ); +const { Model, FailedToCreateError, ValidationError } = require( './model' ); /** * @typedef {Object} UserPhoneNumber @@ -40,6 +40,7 @@ class UserPhoneNumber extends Model { * @param {number|string} phone_number_id - Phone number ID * @returns {Promise} Created relation instance * @throws {ValidationError} If IDs are invalid + * @throws {FailedToCreateError} If creation fails */ static async add_relation( user_id, phone_number_id ) { const user_id_int = parseInt( user_id, 10 ); @@ -54,7 +55,7 @@ class UserPhoneNumber extends Model { `; const values = [user_id_int, phone_number_id_int]; const result = await phsdb.query( query_str, values, { plain:true } ); - if (!result) throw new ValidationError( 'Failed to add user-phone number relation' ); + if (!result) throw new FailedToCreateError( 'Failed to add user-phone number relation' ); return new UserPhoneNumber( result ); }; @@ -82,6 +83,39 @@ class UserPhoneNumber extends Model { const result = await phsdb.query( query_str, values, { plain:!isNaN( user_id_int ) } ); return result ? new UserPhoneNumber( result ) : null; }; + + /** + * Find user-phone number relation by IDs + * @param {number|string} user_id - User ID + * @param {number|string} phone_number_id - Phone number ID + * @param {string[]} [excludes] - Fields to exclude from result + * @returns {Promise} Relation instance or null + */ + static async find_by_ids( user_id, phone_number_id, excludes = [] ) { + return await new UserPhoneNumber().find_one( + { user_id, phone_number_id }, + excludes + ); + }; + + /** + * Find user-phone number relations by user ID + * @param {number|string} user_id - User ID + * @param {string[]} [excludes] - Fields to exclude from result + * @param {{name: string, direction?: 'asc'|'desc'}||null} [order_by] - Order by configuration + * @param {number} [limit=100] - Maximum number of records + * @param {number} [offset=0] - Number of records to skip + * @returns {Promise} Array of relations + */ + static async find_by_user_id( user_id, excludes = [], order_by = null, limit = 100, offset = 0 ) { + return await new UserPhoneNumber().find_many( + { user_id }, + excludes, + order_by, + limit, + offset + ); + }; } module.exports = UserPhoneNumber; \ No newline at end of file