Update URI after minting and then freezing URI so it cant be updated again

Hi all!

Im making my smart contract now but its a bit different then a normal use case. I would like to have a base URI for all my nfts(so people are not able to see which exact nft they will get), but upon purchase, i can update the URI to the correct one(so people will see the exact nft), where i would want to freeze it(so nobody, including me) can ever change it.

I can just make a script that loops every x amount of time through the token id's in my wallet and then update the URI of the token id's that left my wallet since last loop. So there is no problem there. Im just very unsure about what functions i need to use. This is what i think i would need based on wizard.openzeppelin:

But like i said, im unsure. I want o use IPFS to upload the URI's(generic uri and for the correct uri's for after purchase). Now from what i read is that i would need the URI storage, is that correct? And how would i go about freezing the possibility to update URI's again? Do i need Pausable for that? Because i just want to update the URI ONCE and then never again. It would be amazing if someone could help or point me in the right direction. Thanks for your time.