]> PHS Git Server - phs-api.git/commitdiff
Cleaning up the user_phone_numbers.model.js file.
authorcharleswrayjr <charleswrayjr@gmail.com>
Fri, 12 Sep 2025 02:05:52 +0000 (21:05 -0500)
committercharleswrayjr <charleswrayjr@gmail.com>
Fri, 12 Sep 2025 02:05:52 +0000 (21:05 -0500)
src/models/user_phone_number.model.js [deleted file]
src/models/user_phone_numbers.model.js [new file with mode: 0644]

diff --git a/src/models/user_phone_number.model.js b/src/models/user_phone_number.model.js
deleted file mode 100644 (file)
index f10189c..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
- * @file User phone numbers model for phase.user_phone_numbers table
- */
-
-const { Model, FailedToCreateError, ValidationError } = require( './model' );
-
-/**
- * @typedef {Object} UserPhoneNumber
- * @property {number} user_id - User ID (foreign key)
- * @property {number} phone_number_id - Phone number ID (foreign key)
- */
-
-/**
- * User phone number model class
- * @extends Model
- */
-class UserPhoneNumber extends Model {
-  /**
-   * Create a UserPhoneNumber instance
-   * @param {Partial<UserPhoneNumber>} [props] - User phone number properties
-   */
-  constructor( props ) {
-    super( props );
-    this.table = 'phase.user_phone_numbers';
-    this.prepend = 'upn';
-    this.default_columns = ['user_id', 'phone_number_id'];
-    this.update_exclude_columns = ['user_id', 'phone_number_id'];
-    this.base_query = `
-        SELECT upn.user_id, upn.phone_number_id
-        FROM phase.user_phone_numbers upn
-    `;
-    this.base_list_query = this.base_query;
-    this.default_order_by = 'ORDER BY upn.user_id ASC';
-    this.instance = _props => new UserPhoneNumber( _props );
-  };
-
-  /**
-   * Add a user-phone number relation
-   * @param {number|string} user_id - User ID
-   * @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 );
-    const phone_number_id_int = parseInt( phone_number_id, 10 );
-    if (isNaN( user_id_int ) || isNaN( phone_number_id_int )) {
-      throw new ValidationError( 'user_id and phone_number_id must be valid integers' );
-    }
-    const query_str = `
-        INSERT INTO phase.user_phone_numbers (user_id, phone_number_id)
-        VALUES ($1, $2)
-        RETURNING *;
-    `;
-    const values = [user_id_int, phone_number_id_int];
-    const result = await phsdb.query( query_str, values, { plain:true } );
-    if (!result) throw new FailedToCreateError( 'Failed to add user-phone number relation' );
-    return new UserPhoneNumber( result );
-  };
-
-  /**
-   * Remove a user-phone number relation
-   * @param {number|string} phone_number_id - Phone number ID
-   * @param {number|string|undefined} [user_id = undefined] - User ID
-   * @returns {Promise<UserPhoneNumber|null>} Deleted relation instance or null
-   * @throws {ValidationError} If IDs are invalid
-   */
-  static async remove_relation( phone_number_id, user_id = undefined ) {
-    const user_id_int = parseInt( user_id, 10 );
-    const phone_number_id_int = parseInt( phone_number_id, 10 );
-    if (isNaN( phone_number_id_int )) {
-      throw new ValidationError( 'phone_number_id must be valid integers' );
-    }
-    let query_str = `
-        DELETE
-        FROM phase.user_phone_numbers
-        WHERE phone_number_id = $1 ${ user_id_int ? 'AND user_id = $2' : '' }
-        RETURNING *;
-    `;
-    const values = [phone_number_id_int];
-    if (!isNaN( user_id_int )) values.push( user_id_int );
-    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
diff --git a/src/models/user_phone_numbers.model.js b/src/models/user_phone_numbers.model.js
new file mode 100644 (file)
index 0000000..f10189c
--- /dev/null
@@ -0,0 +1,121 @@
+/**
+ * @file User phone numbers model for phase.user_phone_numbers table
+ */
+
+const { Model, FailedToCreateError, ValidationError } = require( './model' );
+
+/**
+ * @typedef {Object} UserPhoneNumber
+ * @property {number} user_id - User ID (foreign key)
+ * @property {number} phone_number_id - Phone number ID (foreign key)
+ */
+
+/**
+ * User phone number model class
+ * @extends Model
+ */
+class UserPhoneNumber extends Model {
+  /**
+   * Create a UserPhoneNumber instance
+   * @param {Partial<UserPhoneNumber>} [props] - User phone number properties
+   */
+  constructor( props ) {
+    super( props );
+    this.table = 'phase.user_phone_numbers';
+    this.prepend = 'upn';
+    this.default_columns = ['user_id', 'phone_number_id'];
+    this.update_exclude_columns = ['user_id', 'phone_number_id'];
+    this.base_query = `
+        SELECT upn.user_id, upn.phone_number_id
+        FROM phase.user_phone_numbers upn
+    `;
+    this.base_list_query = this.base_query;
+    this.default_order_by = 'ORDER BY upn.user_id ASC';
+    this.instance = _props => new UserPhoneNumber( _props );
+  };
+
+  /**
+   * Add a user-phone number relation
+   * @param {number|string} user_id - User ID
+   * @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 );
+    const phone_number_id_int = parseInt( phone_number_id, 10 );
+    if (isNaN( user_id_int ) || isNaN( phone_number_id_int )) {
+      throw new ValidationError( 'user_id and phone_number_id must be valid integers' );
+    }
+    const query_str = `
+        INSERT INTO phase.user_phone_numbers (user_id, phone_number_id)
+        VALUES ($1, $2)
+        RETURNING *;
+    `;
+    const values = [user_id_int, phone_number_id_int];
+    const result = await phsdb.query( query_str, values, { plain:true } );
+    if (!result) throw new FailedToCreateError( 'Failed to add user-phone number relation' );
+    return new UserPhoneNumber( result );
+  };
+
+  /**
+   * Remove a user-phone number relation
+   * @param {number|string} phone_number_id - Phone number ID
+   * @param {number|string|undefined} [user_id = undefined] - User ID
+   * @returns {Promise<UserPhoneNumber|null>} Deleted relation instance or null
+   * @throws {ValidationError} If IDs are invalid
+   */
+  static async remove_relation( phone_number_id, user_id = undefined ) {
+    const user_id_int = parseInt( user_id, 10 );
+    const phone_number_id_int = parseInt( phone_number_id, 10 );
+    if (isNaN( phone_number_id_int )) {
+      throw new ValidationError( 'phone_number_id must be valid integers' );
+    }
+    let query_str = `
+        DELETE
+        FROM phase.user_phone_numbers
+        WHERE phone_number_id = $1 ${ user_id_int ? 'AND user_id = $2' : '' }
+        RETURNING *;
+    `;
+    const values = [phone_number_id_int];
+    if (!isNaN( user_id_int )) values.push( user_id_int );
+    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