]> PHS Git Server - phs-api.git/commitdiff
Cleaning up the phone_number.model.js file.
authorcharleswrayjr <charleswrayjr@gmail.com>
Fri, 12 Sep 2025 02:03:55 +0000 (21:03 -0500)
committercharleswrayjr <charleswrayjr@gmail.com>
Fri, 12 Sep 2025 02:03:55 +0000 (21:03 -0500)
src/models/user_phone_number.model.js

index 4a007328c6fb5c023a384ee7d905f7ab05492648..f10189cfede625a616cde43691ceb9afca95f202 100644 (file)
@@ -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<UserPhoneNumber>} 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<UserPhoneNumber|null>} 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<UserPhoneNumber[]>} 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