feature/get-places-api #2

Merged
behnam merged 26 commits from feature/get-places-api into develop 2023-05-23 09:23:56 +00:00
11 changed files with 117 additions and 0 deletions
Showing only changes of commit 4e18835297 - Show all commits

View File

@ -16,6 +16,11 @@ class UsersModel {
getTitle(): string {
return this.modelTitle;
}
addUser(user: Users): Users[] {
this.usersList.push(user);
return this.usersList;
}
}
export default UsersModel;

View File

@ -0,0 +1,12 @@
import { CreateAccountDTOReturnType, INewUserDTO } from './protocols';
const createAccountDTO = (
newUser: INewUserDTO
): CreateAccountDTOReturnType => ({
enabled: true,
firstName: newUser.firstname,
lastName: newUser.lastname,
username: newUser.phonenumber,
});
export default createAccountDTO;

View File

@ -0,0 +1,12 @@
export interface INewUserDTO {
firstname: string;
lastname: string;
phonenumber: string;
}
export type CreateAccountDTOReturnType = {
username: string;
firstName: string;
lastName: string;
enabled: true;
};

View File

@ -0,0 +1,8 @@
import { INewUserDTO } from '../dto/protocols';
import { CreateAccountROReturnType } from '../response-object/protocols';
interface ICreateAcountRepo {
execute: (newUser: INewUserDTO) => Promise<CreateAccountROReturnType>;
}
export default ICreateAcountRepo;

View File

@ -0,0 +1,25 @@
import createAccountDTO from '../dto/createAccountDTO';
import { INewUserDTO } from '../dto/protocols';
import createAcountRO from '../response-object/createAcountRO';
import { CreateAccountROReturnType } from '../response-object/protocols';
import ICreateAcountRepo from './ICreateAcountRepo';
import { HttpHandler } from './protocols';
export default class CreateAccountRepo implements ICreateAcountRepo {
private httpHandler: HttpHandler;
constructor(httpHandler: HttpHandler) {
this.httpHandler = httpHandler;
}
execute: (newUser: INewUserDTO) => Promise<CreateAccountROReturnType> =
async (newUser: INewUserDTO) => {
// call dto
const dto = createAccountDTO(newUser);
// call
const newAccountResponse = await this.httpHandler(dto);
// call response object
const newAccount = createAcountRO(newAccountResponse);
return newAccount;
};
}

View File

@ -0,0 +1,6 @@
import { CreateAccountDTOReturnType } from '../dto/protocols';
import { CreateAcountResponseApi } from '../response-object/protocols';
export type HttpHandler = (
newUser: CreateAccountDTOReturnType
) => Promise<CreateAcountResponseApi>;

View File

@ -0,0 +1,13 @@
import {
CreateAccountROReturnType,
CreateAcountResponseApi,
} from './protocols';
const createAcountRO = (
apiResponse: CreateAcountResponseApi
): CreateAccountROReturnType => ({
accountId: apiResponse.id,
phonenumber: apiResponse.username,
});
export default createAcountRO;

View File

@ -0,0 +1,10 @@
export type CreateAcountResponseApi = {
nextRequestTimestamp: number;
username: string;
id: string;
};
export type CreateAccountROReturnType = {
phonenumber: string;
accountId: string;
};

View File

@ -0,0 +1,5 @@
import UsersModel from '../../../common/data/model/usersModel';
type ICreateUserRepo = () => Promise<UsersModel>;
export default ICreateUserRepo;

View File

@ -0,0 +1,7 @@
import ICreateUserRepo from './ICreateUserRepo';
const creatUserRepo = () => {
};
export default creatUserRepo;

View File

@ -0,0 +1,14 @@
import ICreateUserRepo from '../data/repository/ICreateUserRepo';
export default class CreateUserUsecase {
private accountRepository: ICreateUserRepo;
constructor(repository: ICreateUserRepo) {
this.repository = repository;
}
async execute() {
// create acount
// create profile by account ID
}
}