I am working on publishing the files for my pipeline.
I have a pretty static file structure typical for a common VFX pipeline:
In my case, publishing is just a record of the file version in the database. The published version becomes “final” and used in the further pipeline steps. E.g. if I have an asset rig of
016 version published, the render scene will reference this file. So far, so good, current shot state may look like:
But any file could be published several times, then the rest of the chain should be updated and hence the version dependencies would be different.
My goal is to be able to restore all input dependencies for any published version. For example, if I have a PNG render from Nuke version
002, I need to tell what version of Nuke script produce it, what version of EXR 3D render was loaded in that script, what version of the render scene produce this EXR, which asset version was loaded into the render scene, etc.
The current design is:
- Each pipeline file is stored in a “files” table in the database.
- I have a “file_snapshots” table to store published versions for any file.
- The “snapshot_id” field of the “files” table linked to the “file_snapshots” table, so I can get/set published versions for any file.
Now I need to record all input versions for any published file somehow and I can’t find a solution.
My thoughts… I can create a table for each link (arrow on the pics) and at the moment of publishing retrieve all input versions for this file and record those links somehow with these tables…
I have a filling that I am overcomplicating the problem and there is a simple and elegant solution that exists.