Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for INTERFACE object type #35

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

epi-ADN
Copy link

@epi-ADN epi-ADN commented Mar 19, 2024

Not sure if the select methods for fields belonging to the interface class should be repeated in the possible types.

Example of a parent class generated from an INTERFACE object :

<?php

namespace GraphQL\SchemaObject;

class ChampQueryObject extends UnionObject
{
    const OBJECT_NAME = "Champ";

    public function selectId()
    {
        $this->selectField("id");

        return $this;
    }

    public function selectLabel()
    {
        $this->selectField("label");

        return $this;
    }

    public function selectStringValue()
    {
        $this->selectField("stringValue");

        return $this;
    }

    public function onAddressChamp()
    {
        $object = new AddressChampQueryObject();
        $this->addPossibleType($object);

        return $object;
    }

    public function onCarteChamp()
    {
        $object = new CarteChampQueryObject();
        $this->addPossibleType($object);

        return $object;
    }

    public function onCheckboxChamp()
    {
        $object = new CheckboxChampQueryObject();
        $this->addPossibleType($object);

        return $object;
    }

    public function onCiviliteChamp()
    {
        $object = new CiviliteChampQueryObject();
        $this->addPossibleType($object);

        return $object;
    }

    public function onCommuneChamp()
    {
        $object = new CommuneChampQueryObject();
        $this->addPossibleType($object);

        return $object;
    }

    public function onDateChamp()
    {
        $object = new DateChampQueryObject();
        $this->addPossibleType($object);

        return $object;
    }

    public function onDatetimeChamp()
    {
        $object = new DatetimeChampQueryObject();
        $this->addPossibleType($object);

        return $object;
    }

    public function onDecimalNumberChamp()
    {
        $object = new DecimalNumberChampQueryObject();
        $this->addPossibleType($object);

        return $object;
    }

    public function onDepartementChamp()
    {
        $object = new DepartementChampQueryObject();
        $this->addPossibleType($object);

        return $object;
    }

    public function onDossierLinkChamp()
    {
        $object = new DossierLinkChampQueryObject();
        $this->addPossibleType($object);

        return $object;
    }

    public function onEpciChamp()
    {
        $object = new EpciChampQueryObject();
        $this->addPossibleType($object);

        return $object;
    }

    public function onIntegerNumberChamp()
    {
        $object = new IntegerNumberChampQueryObject();
        $this->addPossibleType($object);

        return $object;
    }

    public function onLinkedDropDownListChamp()
    {
        $object = new LinkedDropDownListChampQueryObject();
        $this->addPossibleType($object);

        return $object;
    }

    public function onMultipleDropDownListChamp()
    {
        $object = new MultipleDropDownListChampQueryObject();
        $this->addPossibleType($object);

        return $object;
    }

    public function onPaysChamp()
    {
        $object = new PaysChampQueryObject();
        $this->addPossibleType($object);

        return $object;
    }

    public function onPieceJustificativeChamp()
    {
        $object = new PieceJustificativeChampQueryObject();
        $this->addPossibleType($object);

        return $object;
    }

    public function onRegionChamp()
    {
        $object = new RegionChampQueryObject();
        $this->addPossibleType($object);

        return $object;
    }

    public function onRepetitionChamp()
    {
        $object = new RepetitionChampQueryObject();
        $this->addPossibleType($object);

        return $object;
    }

    public function onSiretChamp()
    {
        $object = new SiretChampQueryObject();
        $this->addPossibleType($object);

        return $object;
    }

    public function onTextChamp()
    {
        $object = new TextChampQueryObject();
        $this->addPossibleType($object);

        return $object;
    }

    public function onTitreIdentiteChamp()
    {
        $object = new TitreIdentiteChampQueryObject();
        $this->addPossibleType($object);

        return $object;
    }
}

Example of one of the possible type "AddressChamp" :

<?php

namespace GraphQL\SchemaObject;

class AddressChampQueryObject extends QueryObject
{
    const OBJECT_NAME = "AddressChamp";

    public function selectAddress(AddressChampAddressArgumentsObject $argsObject = null)
    {
        $object = new AddressQueryObject("address");
        if ($argsObject !== null) {
            $object->appendArguments($argsObject->toArray());
        }
        $this->selectField($object);

        return $object;
    }

    public function selectCommune(AddressChampCommuneArgumentsObject $argsObject = null)
    {
        $object = new CommuneQueryObject("commune");
        if ($argsObject !== null) {
            $object->appendArguments($argsObject->toArray());
        }
        $this->selectField($object);

        return $object;
    }

    public function selectDepartement(AddressChampDepartementArgumentsObject $argsObject = null)
    {
        $object = new DepartementQueryObject("departement");
        if ($argsObject !== null) {
            $object->appendArguments($argsObject->toArray());
        }
        $this->selectField($object);

        return $object;
    }

    public function selectId()
    {
        $this->selectField("id");

        return $this;
    }

    public function selectLabel()
    {
        $this->selectField("label");

        return $this;
    }

    public function selectStringValue()
    {
        $this->selectField("stringValue");

        return $this;
    }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant