ai-cfia / ailab-db

database related scripts and setup
MIT License
1 stars 0 forks source link

New test user upload process #75

Closed ghost closed 1 week ago

ghost commented 4 months ago

We want to create a new process which will enable our test user to directly upload their data to their blob storage and the Database.

We need to create a way for our trusted user to upload their data through our process. I leave this part of the issue to the backend/frontend team to figure how to connect us with the users.

Sequence of the uploading process

sequenceDiagram;
  actor User
  box grey Ai-Lab services
  participant Frontend
  participant Backend
  participant Datastore
  end
  box grey Storage services
  participant PostgreSQL Database
  participant Azure Storage
  end

    User ->> Frontend: Upload session request
    Frontend -->> User: Show session form
    User -) Frontend: Fill form :<br> Seed selection, nb Seeds/Pic, Zoom
    User -) Frontend: Upload: session folder
    Frontend ->> Backend: Upload from trusted user request: <br> Seed info, nbSeeds/Pic, Zoom ,<br> Session Folder & User
    Backend -) Datastore: upload_picture_set (cursor, pictures, user_id, seed_name, zoom_level, nb_seeds)
    Datastore --> PostgreSQL Database: is_seed_registered(seed_name)
    Datastore --> PostgreSQL Database: is_a_user_id(user_id)
    Datastore -) PostgreSQL Database: get_container_url()
    Datastore ->> Datastore: build_picture_set()
    Datastore -) PostgreSQL Database: new_picture_set(user_id)
    Datastore -) Azure Storage: create_folder(picture_set_id)
    loop for each picture_encoded in pictures
      Datastore -) PostgreSQL Database: new_picture(seed_id,picture_set_id)
      Datastore -) Azure Storage: upload_image(picture_encoded)
      Datastore ->> Datastore: build_picture(picture_encoded,blob_url)
      Datastore -) PostgreSQL: update_picture_metadata(picture_id,picture)
    end

Inputs needed:

Backend:

Frontend:

DataBase :

MaxenceGui commented 4 months ago

I think we should consider this issue as an epic since it could lead to tasks being done in the backend and the database (as well as eventually the frontend?)