The current management of files (images, CVs, etc) have a few problems that can be a problem from both maintenance and database performance in the future:
Some images for certain entities (stakeholder, event and organisation) store their images in base64 format in the database.
Other entities store their images directly in Google Cloud Storage (GCS).
In this case we store the full URL including the bucket-name in the database. That is not a good idea if you want to change buckets or storage without affecting the existing images. Ideally the bucket-name should be a system configuration that is used at runtime to upload and serve the images and not be stored in the database.
GPML is using a single GCS bucket to store the images and files for both test and production environment.
The idea is to centralize the images management in a way that:
All files are stored in GCS.
Each environment has its own bucket.
All images/files metadata will be stored in a generic entity named File . This entity will hold metadata such as object_key, extension, filename, created_at and last_modified_at.
The current management of files (images, CVs, etc) have a few problems that can be a problem from both maintenance and database performance in the future:
The idea is to centralize the images management in a way that: