* @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
* @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 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 );
};
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