---
# System prepended metadata

title: Data base schema description

---

# Data base schema description
### [Db schema](https://drive.google.com/file/d/10A_4GNvSVwx7wj9lZcCpY1anLRADKjQQ/view?usp=sharing)

## users 
The main client of the site. Could be freelancer or customer
* role - enum:
    * 'client', 
    * 'freelancer'
* confidentialSetting - enum:
    * 'visible' - phone and email will be shown to client, 
    * 'phoneOnly' - email will be hide from client, 
    * 'emailOnly' - phone will be hide from client, 
    * 'hidden' - phone and email will be hide from client)
    
## forgot_password
User can restore his password

## public_file 
Save user photo
* url - url to image in AWS S3 bucket
* key - unique key to have access to image

## freelancer 
Details of user type freelancer
* updatedAt - date, when entity is updates date change automaticly

## education 
Describe freelancer's education

## experience 
Describe freelancer's experience

## category
Entity describe all categories contained on the site 

## skill 
Entity describe skills that freelancer have and that required to job post

## job_post
Job post may be draft (field `isDraft`)
* fileId - job post may contain some file 
* durationType - enum('week', 'month')
* englishLevel - enum ('pre-intermediate', 'intermediate', 'upper-intermediate')

## local_file
Save file to job post
* mimetype - type of file like 'pdf'

## proposal 
May contain file. May  be send from client and freelancer side
* type - enum:
    *  'proposal' - proposal to client
    *  'invite' - invite to interview freelancer

## offer
Offer sends from client side to freelancer after  they chatting about job post
* status enum:
    * 'pending' - status of offer when it created
    * 'accepted' - if freelancer accepted
    * 'rejected' - if freelancer rejected
    * 'expired' - if time expired

## contract 
Is created when offer accepted

## chat_room 
Client and freelancer can chat with help chat room
* prolongLink - chat room delete after 6 month when contract close, but client can prolong chat room time
* status - enum:
    *  'forAll' - visibility for all 
    *  'freelancerOnly' - only for freealncer
    *  'clientOnly' - only for client

## message 
Messages showing in chat
* messageType - enum: 
    * 'fromUser' - user send it
    * 'fromSystem' - proposal 
    * 'fromSystemOffer' - offer message

## notification
Notification send to user when he receive offer, proposal, message
* type - enum:
    * 'message' - when vis-a-vis send message
    * 'offer' - recive freealncer when client send to him offer
    * 'proposal' - when someone send you proposal