STM32f030C8 I2C EEPROM -no data received when read after a write
My read and write functions work but when i try to read immediately after a write to eeprom, the eeprom doest return any data. however i could immediately do a write consecutively.

This smells like you are not waiting for the EEPROM to finish the write.  I didn't look at your EEPROM, but with all the ones I've ever used, a write or erase sequence only starts the action.  The EEPROM is then busy for some time afterward.

Most EEPROMs have something like a status register where you can poll a bit to see if it is busy.  This read action can be performed whether busy or not.

The most general software architecture always polls the busy bit before trying to do anything.  If the EEPROM is busy, it keeps polling until it is not, then proceeds with whatever action was requested.  More sophisticated implementations set a flag on write and erase, indicating that the EEPROM might be busy.  Busy checking is only done when this flag is set.  Naive implementations always just wait after a erase or write.

Look at your code carefully, especially what exactly is sent to the EEPROM when a write is immediately followed by a read.  My guess is that the busy checking is somehow skipped in that case.