mirror of
https://github.com/sergeyyarkov/educt-server.git
synced 2026-10-11 18:29:15 +03:00
61 lines
1.4 KiB
TypeScript
61 lines
1.4 KiB
TypeScript
import Contact from 'App/Models/Contact';
|
|
import User from 'App/Models/User';
|
|
import CreateUserValidator from 'App/Validators/User/CreateUserValidator';
|
|
import UpdateUserValidator from 'App/Validators/User/UpdateUserValidator';
|
|
|
|
export default class ContactRepository {
|
|
private Contact: typeof Contact;
|
|
|
|
constructor() {
|
|
this.Contact = Contact;
|
|
}
|
|
|
|
/**
|
|
* Create user contacts in database
|
|
*
|
|
* @param user User for associate the contacts
|
|
* @param data Data contacts
|
|
* @returns Created contacts
|
|
*/
|
|
public async create(user: User, data: Pick<CreateUserValidator['schema']['props'], 'email'>) {
|
|
const contacts = await this.Contact.create(data);
|
|
|
|
await contacts.related('user').associate(user);
|
|
await user.load('contacts');
|
|
await user.load('roles');
|
|
|
|
return contacts;
|
|
}
|
|
|
|
/**
|
|
* Update user contacts
|
|
*
|
|
* @param user User
|
|
* @param data Data to update
|
|
* @returns
|
|
*/
|
|
public async update(user: User, data: Pick<UpdateUserValidator['schema']['props'], 'email'>) {
|
|
const contacts = await this.Contact.query().where('user_id', user.id).first();
|
|
|
|
if (contacts) {
|
|
contacts.email = data.email;
|
|
|
|
await contacts.save();
|
|
await user.load('contacts');
|
|
|
|
return contacts;
|
|
}
|
|
|
|
/**
|
|
* Create new user contacts if contacts doesn't exist
|
|
*/
|
|
await user.related('contacts').create({
|
|
email: data.email,
|
|
});
|
|
|
|
await user.load('contacts');
|
|
|
|
return user.contacts;
|
|
}
|
|
}
|