Skip to content

Naira21/phone-contact

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

phone-contact

User Story:

-	Користувач може зареєструватися на продукті
-	Користувач може створити контакт
-	Користувач може відреагувати контакт
-	Користувач може видалити контакт. При цьому контакт буде переміщений у корзину. Справжнє видалення відбудеться через n днів після переміщення в корзину
-	Користувач може отримати всі контакти або отримувати контакти з фільтром по імені

Було б добре

- Можливість додавати контакти у групи (окрема сутність). Відповідно, створювати, видаляти і редагувати групи.
- Можливість нагадувати про дні народження і памʼятні дати
- Подумати над зберіганням чутливої інформації у зашифрованому вигляді

Додаткові питання:

  • пагінація
  • відображення контактів
  • валідація вхідного запиту та моделі

Для реалізації прочитати:

  • logout

Database view

User Table:

  • id
  • name
  • surname
  • email

Contact Table

  • user id (=foreign key)
  • id
  • name
  • surname
  • birthday
  • remembrance
  • isDeleted
  • expiredDate

Contact Group Table

  • id group
  • id contact

Models

User Model:

  • name
  • surname
  • email
  • id

Contact Model

  • user id (=foreign key)
  • id
  • name
  • surname
  • birthday
  • remembrance
  • isDeleted
  • expireDate

Contact Group

  • name
  • id group
  • id contact

Routes

  • \login

  • \logout

  • \user\create

  • \user\get-by-name

  • \users\get

  • \user\update

  • \user\delete

  • \contact\create

  • \contact\get-by-name

  • \contacts\get

  • \contact\update

  • \contact\delete

  • \group\create

  • \group\update

  • \group\get-contacts

  • \group\delete

Use Cases

  1. реєстрація користувача: по відповідному рауту (\login) в тіло запиту прописуємо поля і відправляємо до БД, яка зберігає його та повертає відповідь 201 Створений.

  2. створення контакту: по відповідному рауту (\contact\create) в тілі запиту заповнюємо поля і відправляємо до БД, яка зберігає його та повертає відповідь 201 Створений

  3. редагування контакту: за id контакта шукаємо в БД і повертаємо його; перезаписуємо необхідні поля, по відповідному рауту (\contact\update) відправляємо оновлені дані у БД; повертаємо оновлений контакт.

  4. переміщення до корзини (умовне видалення): коли користувач видаляє контакт, встановлюється isDeleted=true та expireDate встановлюється 30 діб. Нагадування про видалення реалізовується за допомогою Cron. Періодичність, з якою він буде перевіряти дату = кожен день. При запуску функції робити перевірку: якщо expireDate дорівнює 0, то запускати функцію видалення, яка у свою чергу робить пошук за id у БД та прибере його.

  5. отримання всіх контактів або відфільтрований за іменем список: 5.1 список контактів складається лише з тих контактів, у яких isDeleted=false 5.2 отримуємо всіх контактів за раутом (\contacts\get) 5.3 звернутись до БД (\contact\get) за умови, що значення поля дорівнює введеному імені; повертаємо масив контактів

  6. вихід користувача із додатку: по відповідному рауту (\logout) ...

  7. нагадування про памятні події за допомогою Time Ticker.

Validation

Field Validation
name, surname строка, required, з великої літери, без цифр, до 20 символів
email строка, required, відповідає типу "email", до 20 символів
birthday, remembrance строка, required, datetime=2006-01-02 (time.Parse (для парсингу рядка у формат дати))

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages