New tables and permissions
Als er nieuwe tabellen bij komen volg dan de naamgeving. Bij het aanmaken van de migration moet je m.b.v. de .WithMetaData en .WithApiActions methoden gebruiken om de hieronder genoemde opties te zetten.
Voor iedere nieuwe tabel moeten de volgende stappen doorlopen worden:
- Is het nodig dat de frontend zelf records kan ophalen? Als een tabel bijv. alleen gebruikt wordt door de backend of in een service dan hoeft de client hier niets mee. Denk aan StatusHistory tabellen of bijv. het bijhouden van een export status. Zet dan createContract op false. Dit voorkomt dat er een api voor gegenereerd wordt.
- Is het nodig dat de frontend de gehele inhoud van de tabel kan ophalen? Zet dan de optie allowList. Dit mag alleen voor ST- en AT-tabellen gebruikt worden.
- Alleen bij ST-tabellen; zet hasSequence op false zodat je zelf bij de migrations de id waarden kan bepalen.
- Bepaal de rechten voor de tabel. Denk hierbij goed na over wie de records mag aanmaken/bewerken, maar ook welke concrete noodzaak er is om een enkel record op te halen uit de frontend. Als je bij de read bijv. ViewReferenceTable opgeeft mag iedereen effectief alle rijen opvragen wat vrijwel nooit de bedoeling is als het geen AT of ST tabel is. Als er geen concrete noodzaak is gebruik dan de ApiAction.NeverAuthorized.
Je kan beter later extra dingen open zetten dan dat er te veel open blijft staan.
Voor kolommen zijn er de volgende afwegingen:
- AvailableToUser: als de waarde false is komt de kolom niet met de default crud in het resultaat. Dus alle wachtwoord kolommen horen hier false te zijn. Let op, je kan nog steeds het veld retourneren in een overview, maar de base crud controller filterd deze kolom er uit
- AllowClientChange: of de base crud controller wijzigingen op deze kolom accepteerd. Het is heel belangrijk om deze goed te zetten. Alle datum aangemaakt en laatst gewijzigd en aangemaakt door kolommen zullen hun waarden krijgen of uit de default values of events. Je wilt niet hebben dat de gebruiker deze kolommen mag wijzigen vanuit de frontend/api. Vertrouw nooit de input van de client.
- TowardsOrganizationalStructure: geeft aan of een foreign key (indirect) naar de OrganizationalStructure gaat. Deze wordt gebruikt om automatisch de scope/osId te bepalen van een record. De tabel ConversationLocations heeft geen directe foreign key naar de organizationalStructure. Zet deze waarde aan op de kolom ConversationFK omdat de tabel Conversations een fk naar de OrganizationalStructure heeft.
- Translate: of de inhoud direct vertaald moet worden bij uitlezen. Dit hoort alleen in ST tabellen gebruikt te worden. De inhoud van deze tabellen zou voor de tekst waarden alleen maar constanten mogen bevatten welke vervolgens automatisch vertaald worden.
- Als je een defaultvalue wilt opgeven, gebruik dan ook de WithDefaultValue methode op de kolom