Ho uno schema simile a questo:
-
Crea un modello di database
UsagePlan
che memorizza quanti token di utilizzo riceve un cliente a pagamento in cambio della rispettiva tariffa mensile. Attraverso il mio ORM (Django), sovrascrivo il metodosave
per non consentire alcuna scrittura a questa tabella dal mio codice. -
Creo un dispositivo che specifica i piani di utilizzo come specificato dal mio cliente. Ogni volta che distribuisco, questa apparecchiatura viene caricata nel database (idempotently).
-
Creo un altro modello
LiveUsagePlan
. Quando un utente si trasforma in un cliente a pagamento, un'istanza di questo modello è correlata all'utente e memorizza una copia delUsagePlan
che hanno scelto. -
Il mio cliente aggiorna i propri piani di utilizzo, quindi aggiorno la fixture e la distribuzione. I clienti attuali non sono interessati dal momento che il loro
LiveUsagePlans
non cambia ("grandfathered"), tuttavia ilLiveUsagePlans
di tutti i nuovi clienti copierà il nuovoUsagePlans
Sono scettico su questo modello, poiché l'ho inventato e non l'ho mai visto da nessun'altra parte. Non ho mai visto gli apparecchi utilizzati al di fuori del contesto dei test. Ci sono problemi evidenti che non vedo? Qual è il modo migliore per gestire questo tipo di stato per lo più statico?