Fix lib agreements#106
Conversation
|
@SudiptaPaul-31 is attempting to deploy a commit to the ManuelJG's projects Team on Vercel. A member of the Team first needs to authorize it. |
Review — changes requested (do not merge)Thanks for the effort, @SudiptaPaul-31 — but this PR does not implement #10. Blocker 1: wrong layer / wrong repoIssue Thalos-Infrastructure/ThalosFrontend#102 asks for a Frontend migration:
This PR changes Nest ( Please open the PR against ThalosFrontend, following the existing pattern in Blocker 2: circular self-HTTP call
Blocker 3: wrong list routeClient uses Other
Happy to re-review once there’s a Frontend PR that maps to the real Nest endpoints and clears the Supabase greps. |
Migrate Agreements from Supabase to Backend Client
Summary
Migrated agreements data access layer from direct Supabase queries to a new backend HTTP client. This establishes a centralized agreements backend client pattern and removes direct database access from the frontend services.
closes Thalos-Infrastructure/ThalosFrontend#102
Type of Change
Changes Made
New Files
src/agreements/agreements-backend.client.ts- New backend client for agreements APIX-Wallet-Addressheader for backend validationModified Files
src/agreements/agreements.module.tsApiClientModuleimportAgreementsBackendClientprovider and exportsrc/agreements/agreements.service.tsAgreementsBackendClientcallscreate(),getAgreement(),listByWallet(),updateStatus(),updateMilestone(),getActivity(),getByContractId(),linkContract()assertCanAccessAgreement()to use backend clientlogActivity()to use backend clientsrc/disputes/disputes.service.tsAgreementsBackendClientdependencyopenDispute()to use backend client for agreement status updatesresolveDispute()to use backend client for agreement status updatescancelDispute()to use backend client for agreement status updateslogActivity()to use backend clientassertCanAccessAgreement()to use backend clientupdateAgreementStatus()andlogAgreementActivity()patternsEndpoint Mappings
The new
AgreementsBackendClientmaps to the following backend endpoints:POST /agreementscreateAgreement()GET /agreements?wallet=listAgreementsByWallet()GET /agreements/:idgetAgreement()GET /agreements/by-contract/:contractIdgetAgreementByContractId()PATCH /agreements/:id/statusupdateAgreementStatus()PATCH /agreements/:id/milestonesupdateMilestone()GET /agreements/:id/activitygetAgreementActivity()POST /agreements/:id/activitylogActivity()PATCH /agreements/:id/link-contractlinkContract()Technical Details
Backend Client Features
X-Wallet-Addressheader validation for authorizationAuthorization Pattern
X-Wallet-Addressheader)assertCanAccessAgreement()uses backend client for validationBackward Compatibility
Testing
Build & Lint
npm run build- PASSED (exit code 0)npm run lint- PASSED (0 errors, 236 pre-existing warnings)Verification
agreementstable inagreements.service.tsagreement_activitytable inagreements.service.tsagreementstable indisputes.service.tsAgreementsBackendClientMigration Notes
For Disputes Service
The disputes service continues to work without changes to its public interface:
updateAgreementStatus()is internally called via the backend clientlogAgreementActivity()is internally called via the backend clientFor Other Services
Other services that consume agreements data should be updated in separate PRs:
webhooks.service.ts- handles blockchain events (may need backend relay)notifications.service.ts- fetches agreement metadataagreement-chat.service.ts- validates agreement accesswallets.service.ts- checks agreement participantsChecklist