-
Notifications
You must be signed in to change notification settings - Fork 25
Commit
- Loading branch information
There are no files selected for viewing
Large diffs are not rendered by default.
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
{"pageProps":{"projectName":"SSW Clean Architecture Template","currentAdr":{"slug":"20240415-replace-string-length-constraints-with-better-business-rules","package":null,"title":"Replace database string length constraints with better business rules","status":"accepted","supersededBy":null,"tags":["database","domains"],"deciders":["Matt Wicks","Matt Goldman","Chris Clement","Daniel Mackay"],"body":{"enhancedMdx":"\nTechnical Story: https://github.com/SSWConsulting/SSW.CleanArchitecture/issues/285\n\n## Context and Problem Statement\n\nAs we are moving forward to make sure that CleanArchitecture template is lean and can be used\nstraightforward in modern projects, we are going to drop technical constraints such as string length in names and description\nand instead opt to add more rules which adhere more to the example business logic (e.g. a hero name and alias cannot be the same).\n\n## Decision Drivers <!-- optional -->\n\n- Make sure faster setup time for CleanArchitecture templates in modern projects\n- Reduce arbitrary technical concerns in database that does not stem from thoughtful requirements\n\n## Considered Options\n\n1. (Recommended) Replace string length constraints with non-technical requirement\n2. Drop string length constraints and do not replace them\n3. Keep string length constraints but split the constants to each domain\n\n## Decision Outcome\n\nChosen option: \"Replace string length constraints with non-technical requirement\", because we want to\nkeep the example of guard clauses in the code.\n\n## Pros and Cons of the Options <!-- optional -->\n\n### 1. Replace string length constraints with non-technical requirement\n\n- ✅ Guard clauses example\n- ✅ No shared constraint values\n- ❌ No example of linking domain constraints to infrastructure implementation\n\n### 2. Drop string length constraints and do not replace them\n\n- ✅ No shared constants\n- ❌ No guard clauses example\n\n### 3. Keep string length constraints but split the constants to each domain\n\n- ✅ No changes to code\n- ✅ Guard clauses example\n- ❌ Shared constraint values for different entities / across aggregate root\n- ❌ Template starts with limit to string length which might not be needed / different value needed for different projects\n\n"},"creationDate":"2024-04-15T07:06:49.000Z","lastEditDate":"2024-04-15T07:06:49.000Z","lastEditAuthor":"Chris Clement [SSW]","publicationDate":"2024-04-15T13:59:59.000Z","file":{"relativePath":"docs/adr/20240415-replace-string-length-constraints-with-better-business-rules.md","absolutePath":"/home/runner/work/SSW.CleanArchitecture/SSW.CleanArchitecture/docs/adr/20240415-replace-string-length-constraints-with-better-business-rules.md"},"repository":{"provider":"github","viewUrl":"https://github.com/SSWConsulting/SSW.CleanArchitecture/blob/master/docs/adr/20240415-replace-string-length-constraints-with-better-business-rules.md"}},"l4bVersion":"1.0.1"},"__N_SSG":true} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
{"pageProps":{"projectName":"SSW Clean Architecture Template","adrs":[{"slug":"20230612-use-log4brains-to-manage-the-adrs","package":null,"title":"Use Log4brains to manage the ADRs","status":"accepted","creationDate":"2023-06-12T04:43:02.000Z","publicationDate":"2023-06-11T13:59:59.000Z"},{"slug":"20230612-use-markdown-architectural-decision-records","package":null,"title":"Use Markdown Architectural Decision Records","status":"accepted","creationDate":"2023-06-12T04:43:02.000Z","publicationDate":"2023-06-11T13:59:59.000Z"},{"slug":"20230612-use-ef-core-and-specifications-in-commands-and-queries","package":null,"title":"Use EF Core and Specifications in Commands and Queries","status":"accepted","creationDate":"2023-06-14T07:18:11.000Z","publicationDate":null},{"slug":"20230604-use-the-factory-pattern-to-create-aggregates","package":null,"title":"Use the Factory Pattern to Create Aggregates","status":"accepted","creationDate":"2023-06-15T01:49:58.000Z","publicationDate":null},{"slug":"20230810-move-specifications-to-the-domain","package":null,"title":"Move Specifications to the Domain Layer","status":"accepted","creationDate":"2023-08-11T06:58:41.000Z","publicationDate":"2023-08-11T13:59:59.000Z"},{"slug":"20231212-subcutaneous-tests-should-target-webapi-layer","package":null,"title":"Subcutaneous Tests Should Target WebApi Layer","status":"accepted","creationDate":"2023-12-12T07:26:48.000Z","publicationDate":"2023-12-12T12:59:59.000Z"},{"slug":"20240219-revisit-openapi-document-generation","package":null,"title":"Revisit OpenAPI document generation","status":"accepted","creationDate":"2024-02-20T05:46:00.000Z","publicationDate":"2024-02-19T12:59:59.000Z"},{"slug":"20240404-use-domain-driven-design-tactical-patterns","package":null,"title":"Use Domain-Driven Design Tactical Patterns","status":"accepted","creationDate":"2024-04-15T02:18:09.000Z","publicationDate":"2024-04-04T12:59:59.000Z"},{"slug":"20240415-replace-string-length-constraints-with-better-business-rules","package":null,"title":"Replace database string length constraints with better business rules","status":"accepted","creationDate":"2024-04-15T07:06:49.000Z","publicationDate":"2024-04-15T13:59:59.000Z"}],"markdown":"<!-- This file is the homepage of your Log4brains knowledge base. You are free to edit it as you want -->\n\n# Architecture knowledge base\n\nWelcome 👋 to the architecture knowledge base of SSW Clean Architecture Template.\nYou will find here all the Architecture Decision Records (ADR) of the project.\n\n## Definition and purpose\n\n> An Architectural Decision (AD) is a software design choice that addresses a functional or non-functional requirement that is architecturally significant.\n> An Architectural Decision Record (ADR) captures a single AD, such as often done when writing personal notes or meeting minutes; the collection of ADRs created and maintained in a project constitutes its decision log.\n\nAn ADR is immutable: only its status can change (i.e., become deprecated or superseded). That way, you can become familiar with the whole project history just by reading its decision log in chronological order.\nMoreover, maintaining this documentation aims at:\n\n- 🚀 Improving and speeding up the onboarding of a new team member\n- 🔭 Avoiding blind acceptance/reversal of a past decision (cf [Michael Nygard's famous article on ADRs](https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions.html))\n- 🤝 Formalizing the decision process of the team\n\n## Usage\n\nThis website is automatically updated after a change on the `main` branch of the project's Git repository.\nIn fact, the developers manage this documentation directly with markdown files located next to their code, so it is more convenient for them to keep it up-to-date.\nYou can browse the ADRs by using the left menu or the search bar.\n\nThe typical workflow of an ADR is the following:\n\n![ADR workflow](/l4b-static/adr-workflow.png)\n\nThe decision process is entirely collaborative and backed by pull requests.\n\n## More information\n\n- [Log4brains documentation](https://github.com/thomvaill/log4brains/tree/master#readme)\n- [What is an ADR and why should you use them](https://github.com/thomvaill/log4brains/tree/master#-what-is-an-adr-and-why-should-you-use-them)\n- [ADR GitHub organization](https://adr.github.io/)\n","l4bVersion":"1.0.1"},"__N_SSG":true} |
Large diffs are not rendered by default.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.