* @file Phone number model for phase.phone_numbers table
*/
-const { Model, ValidationError } = require('./model');
+const { Model, ValidationError } = require( './model' );
/**
* @typedef {Object} PhoneNumber
* Create a PhoneNumber instance
* @param {Partial<PhoneNumber>} [props] - Phone number properties
*/
- constructor(props) {
- super(props);
+ constructor( props ) {
+ super( props );
this.table = 'phase.phone_numbers';
this.prepend = 'pn';
this.default_columns = [
];
this.update_exclude_columns = ['id', 'created_at', 'is_deleted', 'deleted_at', 'deleted_by_id'];
this.base_query = `
- SELECT pn.id, pn.name, pn.type, pn.number, pn.created_by_id, pn.created_at,
- pn.is_deleted, pn.deleted_by_id, pn.deleted_at
+ SELECT pn.id,
+ pn.name,
+ pn.type,
+ pn.number,
+ pn.created_by_id,
+ pn.created_at,
+ pn.is_deleted,
+ pn.deleted_by_id,
+ pn.deleted_at
FROM phase.phone_numbers pn
WHERE pn.is_deleted = false
`;
WHERE pn.is_deleted = false
`;
this.default_order_by = 'ORDER BY pn.number ASC';
- this.instance = _props => new PhoneNumber(_props);
+ this.instance = _props => new PhoneNumber( _props );
}
/**
* @returns {Promise<PhoneNumber>} Created phone number instance
* @throws {ValidationError} If required fields are missing
*/
- static async create(phone_data) {
+ static async create( phone_data ) {
const { name = 'mobile', type = 'mobile', number, created_by_id = null } = phone_data;
- if (!number) throw new ValidationError('Missing required field: number');
+ if (!number) throw new ValidationError( 'Missing required field: number' );
const query_str = `
INSERT INTO phase.phone_numbers (name, type, number, created_by_id)
- VALUES ($1, $2, $3, $4) RETURNING *;
+ VALUES ($1, $2, $3, $4)
+ RETURNING *;
`;
const values = [name, type, number, created_by_id];
- const result = await phsdb.query(query_str, values, { plain: true });
- if (!result) throw new ValidationError('Failed to create phone number');
- return new PhoneNumber(result);
+ const result = await phsdb.query( query_str, values, { plain:true } );
+ if (!result) throw new ValidationError( 'Failed to create phone number' );
+ return new PhoneNumber( result );
};
- static async add_user(user_id) {
+ static async add_user( user_id ) {
const done = await require( 'user_phone_number.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;
};
* @param {string[]} [excludes] - Fields to exclude from result
* @returns {Promise<PhoneNumber|null>} Phone number instance or null
*/
- static async find_by_number(number, excludes = []) {
- return await new PhoneNumber().find_one({ number }, excludes);
- }
+ static async find_by_number( number, excludes = [] ) {
+ return await new PhoneNumber().find_one( { number }, excludes );
+ };
/**
* Soft delete phone number
* @returns {Promise<PhoneNumber>} Updated phone number instance
* @throws {ValidationError} If deleted_by_id is invalid
*/
- 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 phone number
- * @returns {Promise<User|null>} 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 = PhoneNumber;
\ No newline at end of file