Calling Developers!
We are reenergizing our code contribution process! Learn More

What are the Slack Archives?

It’s a history of our time together in the Slack Community! There’s a ton of knowledge in here, so feel free to search through the archives for a possible answer to your question.

Because this space is not active, you won’t be able to create a new post or comment here. If you have a question or want to start a discussion about something, head over to our categories and pick one to post in! You can always refer back to a post from Slack Archives if needed; just copy the link to use it as a reference..

Hi Please let me know when we should use reader and writer classes as per spryker standards.

Options
U03TXRYL7U7
U03TXRYL7U7 Posts: 64 🧑🏻‍🚀 - Cadet
edited October 2022 in Help

Hi
Please let me know when we should use reader and writer classes as per spryker standards.

Comments

  • fsmeier
    fsmeier Senior Software Engineer & Developer Enablement Advocate Sprykee Posts: 1,034 ⚖️ - Guardians (admin)
    Options

    Hey, can you maybe elaborate more on what exactly you need to know?

  • U03TXRYL7U7
    U03TXRYL7U7 Posts: 64 🧑🏻‍🚀 - Cadet
    Options

    In Some vendor modules, reader and writer classes are written when we are fetching data and saving data.
    So I just need to know if there is formatting required while saving or fetching then whether we should use reader or writer classes.
    or is there any further use cases for these classes.

  • fsmeier
    fsmeier Senior Software Engineer & Developer Enablement Advocate Sprykee Posts: 1,034 ⚖️ - Guardians (admin)
    Options

    It is mostly about separating different logic

  • U03TXRYL7U7
    U03TXRYL7U7 Posts: 64 🧑🏻‍🚀 - Cadet
    Options

    Can you please provide some usecase for that with examples

  • fsmeier
    fsmeier Senior Software Engineer & Developer Enablement Advocate Sprykee Posts: 1,034 ⚖️ - Guardians (admin)
    edited October 2022
    Options

    Ideally you should follow some kind of the following structure:

    /Business
        /EntityA
            /Writer
                EntityAWriterInterface
                EntityAWriter
            /Reader
                EntityAReaderInterface
                EntityAReader
            /Expander
                EntityAExpanderInterface
                EntityAExpander
    
        /EntityB
            /Writer
            /Reader
            /Expander
    

    Reader: reads and optionally hydrates the corresponding entity or entities

    Writer: saves and/or creates and/or deletes the corresponding entity or entities

  • fsmeier
    fsmeier Senior Software Engineer & Developer Enablement Advocate Sprykee Posts: 1,034 ⚖️ - Guardians (admin)
    Options

    Does this help?

  • fsmeier
    fsmeier Senior Software Engineer & Developer Enablement Advocate Sprykee Posts: 1,034 ⚖️ - Guardians (admin)
    Options

    But please have in mind that you dont need these interfaces on project level in most of the cases

  • U03TXRYL7U7
    U03TXRYL7U7 Posts: 64 🧑🏻‍🚀 - Cadet
    Options

    ok, it means if while saving and fetching any business logic is there then reader and writer comes into picture.
    Ok thanks for clearing out the confusion.

  • fsmeier
    fsmeier Senior Software Engineer & Developer Enablement Advocate Sprykee Posts: 1,034 ⚖️ - Guardians (admin)
    Options

    Yeah, it is in the end just a logical separation between read & write, similar to Repository and Entitymanager

  • U03TXRYL7U7
    U03TXRYL7U7 Posts: 64 🧑🏻‍🚀 - Cadet
    Options

    so before entering to repository , reader is there and and before entering to entity manager , writer is there for any business logic, Please confirm.

  • fsmeier
    fsmeier Senior Software Engineer & Developer Enablement Advocate Sprykee Posts: 1,034 ⚖️ - Guardians (admin)
    Options

    reader and writer are both there for business logic (since they are in the business layer) - If you would just forward the EntityManager or Repository inside the reader and writer you can also use the EntityManager or Repository directly in the Facade. But as soon as you need to do additional operations you should introduce a reader and/or a writer class to put the logic there.

  • U03TXRYL7U7
    U03TXRYL7U7 Posts: 64 🧑🏻‍🚀 - Cadet
    Options

    ok thanks

  • U03TXRYL7U7
    U03TXRYL7U7 Posts: 64 🧑🏻‍🚀 - Cadet
    Options

    it helps🙂