From 4aeb97a9212eac7206b250480ffe8df0c17e57c5 Mon Sep 17 00:00:00 2001 From: Luiz Date: Fri, 8 Sep 2023 00:38:03 -0300 Subject: [PATCH] localStorage, fetch, axios, supabase --- public/codes/api/rest/github-api.http | 11 +- .../codes/package/supabase-api/.env.example | 1 + .../package/supabase-api/invest-api.http | 43 ++++ .../supabase-api/delete-investment.png | Bin 0 -> 13507 bytes .../package/supabase-api/delete-investment.pu | 10 + .../package/supabase-api/get-investment.png | Bin 0 -> 20335 bytes .../package/supabase-api/get-investment.pu | 10 + .../package/supabase-api/get-investments.png | Bin 0 -> 20550 bytes .../package/supabase-api/get-investments.pu | 10 + .../package/supabase-api/patch-investment.png | Bin 0 -> 25698 bytes .../package/supabase-api/patch-investment.pu | 10 + .../package/supabase-api/post-investment.png | Bin 0 -> 26914 bytes .../package/supabase-api/post-investment.pu | 10 + src/consts.ts | 10 +- src/content/classnotes/api/rest/index.mdx | 46 ++-- .../classnotes/package/axios/index.mdx | 137 +++++++++++- .../classnotes/package/supabase-api/index.mdx | 205 +++++++++++++++++- .../package/supabase-client/index.mdx | 155 ++++++++++++- .../classnotes/w3c/fetch-api/index.mdx | 172 +++++++++++++++ .../index.mdx | 2 +- 20 files changed, 791 insertions(+), 41 deletions(-) create mode 100644 public/codes/package/supabase-api/.env.example create mode 100644 public/codes/package/supabase-api/invest-api.http create mode 100644 public/imgs/package/supabase-api/delete-investment.png create mode 100644 public/imgs/package/supabase-api/delete-investment.pu create mode 100644 public/imgs/package/supabase-api/get-investment.png create mode 100644 public/imgs/package/supabase-api/get-investment.pu create mode 100644 public/imgs/package/supabase-api/get-investments.png create mode 100644 public/imgs/package/supabase-api/get-investments.pu create mode 100644 public/imgs/package/supabase-api/patch-investment.png create mode 100644 public/imgs/package/supabase-api/patch-investment.pu create mode 100644 public/imgs/package/supabase-api/post-investment.png create mode 100644 public/imgs/package/supabase-api/post-investment.pu rename src/content/classnotes/w3c/{crud-elements => local-storage}/index.mdx (86%) diff --git a/public/codes/api/rest/github-api.http b/public/codes/api/rest/github-api.http index 2ef0f10..f77cb88 100644 --- a/public/codes/api/rest/github-api.http +++ b/public/codes/api/rest/github-api.http @@ -1,10 +1,11 @@ +@host=https://api.github.com @token={{$dotenv GITHUB_TOKEN}} @username=lucachaves @repo=github-repo-api ### Create a repository -POST https://api.github.com/user/repos +POST {{host}}/user/repos Accept: application/vnd.github+json Authorization: Bearer {{token}} X-GitHub-Api-Version: 2022-11-28 @@ -19,19 +20,19 @@ Content-Type: application/json } ### Read repositories -GET https://api.github.com/users/{{username}}/repos +GET {{host}}/users/{{username}}/repos Accept: application/vnd.github+json Authorization: Bearer {{token}} X-GitHub-Api-Version: 2022-11-28 ### Read a repository -GET https://api.github.com/repos/{{username}}/{{repo}} +GET {{host}}/repos/{{username}}/{{repo}} Accept: application/vnd.github+json Authorization: Bearer {{token}} X-GitHub-Api-Version: 2022-11-28 ### Update a repository -PATCH https://api.github.com/repos/{{username}}/{{repo}} +PATCH {{host}}/repos/{{username}}/{{repo}} Accept: application/vnd.github+json Authorization: Bearer {{token}} X-GitHub-Api-Version: 2022-11-28 @@ -46,7 +47,7 @@ Content-Type: application/json } ### Delete a repository -DELETE https://api.github.com/repos/{{username}}/{{repo}} +DELETE {{host}}/repos/{{username}}/{{repo}} Accept: application/vnd.github+json Authorization: Bearer {{token}} X-GitHub-Api-Version: 2022-11-28 diff --git a/public/codes/package/supabase-api/.env.example b/public/codes/package/supabase-api/.env.example new file mode 100644 index 0000000..5681c02 --- /dev/null +++ b/public/codes/package/supabase-api/.env.example @@ -0,0 +1 @@ +SUPABASE_KEY= diff --git a/public/codes/package/supabase-api/invest-api.http b/public/codes/package/supabase-api/invest-api.http new file mode 100644 index 0000000..9dec084 --- /dev/null +++ b/public/codes/package/supabase-api/invest-api.http @@ -0,0 +1,43 @@ +@host = https://qxxivxowaxwsgeruydka.supabase.co +@token = {{$dotenv SUPABASE_KEY}} +@createdInvestmentId = {{createInvestment.response.body.$[0].id}} + +### Create a investment +# @name createInvestment +POST {{host}}/rest/v1/investments +apikey: {{token}} +Authorization: Bearer {{token}} +Content-Type: application/json +Prefer: return=representation + +{ + "name": "Tesouro Selic 2029", + "value": 10000 +} + +### Read investments +GET {{host}}/rest/v1/investments?select=* +apikey: {{token}} +Authorization: Bearer {{token}} + +### Read a investment +GET {{host}}/rest/v1/investments?id=eq.{{createdInvestmentId}} +apikey: {{token}} +Authorization: Bearer {{token}} + + +### Update a investment +PATCH {{host}}/rest/v1/investments?id=eq.{{createdInvestmentId}} +apikey: {{token}} +Authorization: Bearer {{token}} +Content-Type: application/json +Prefer: return=representation + +{ + "value": 15000 +} + +### Delete a investment +DELETE {{host}}/rest/v1/investments?id=eq.{{createdInvestmentId}} +apikey: {{token}} +Authorization: Bearer {{token}} diff --git a/public/imgs/package/supabase-api/delete-investment.png b/public/imgs/package/supabase-api/delete-investment.png new file mode 100644 index 0000000000000000000000000000000000000000..38dea6ffa59dcc29382a56c02c2c647f74b95d13 GIT binary patch literal 13507 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≫k%c9u_P#OA*eiZE7W(3t{$0@ypDe;em{9PLh<5I)&FK4?Go4-90tPWTLY zSYskcZRruCd9P&WM~?=eA0#J~nk)esDa3S8M5^+)T*qn(M|y|+&&liQGDJL;r&|J` zi23!ZIFp3NKk5Zp#R54@CH;P|P|yx2x4db4=d!$hay#% z^@G4}FTL%4;J8&!^0SCLI*}tEe?8R^d=Wh2vh`gC!f&2!zL)1!e~v`RJQ_YYJQRO( zSwm5AymKsJ*BM)O$BeUYo>Eo%t7@bf=Mi^-cY{rYH)`s!#4Lu};(cGiecm4VWH2$qSl`rpQJJiFoWKh$-Q(iSRJu8? zt8*WxBR6Wv8iA0bt?6sa$(n%Jv>y~&0k_+;fM*Li~KjFa2$dgIhc}gD6lC-b+3hBL568yNwnN<_PQ6sunrR9Q@@>l@VMN5x>b4ZBs37cY zL}a9-uF9&af~JLu*6c_zRfD-&GWXF*g9mD$pp&3jF5LYnfqsj1+oat4^I5(zfB5~Ew@ zoh4GM@$y1#8Zmnf*?DVDAE8Zv_8r{7ednS}L7%5%LZgjm0}A2n^fWJw?4?DLPMXxy z7&>1fRR4gP?F$XPpi>FY4+LG4PeIf{m~=7>#-aIKu$>WVZUoUq%@z}CrO26dZwDJd z)fjgq^!2HG*LT3^5s+Ppf4$(BZabU5c*=nO_>FmWpvWV)H42`}LT3i5$ViUb=5=D+ zxfZSdrL{FtY;tX~wKCPEOM=sG<{LDUpU1RQX6GZ!cBu!xdBeuSa)H^uu|A75L@C*! zE<7|eQ>SVVz;5l$drpu^(E3_bo)0L_V%tqoxg4^wu@R8sfZjNIpkL}$YjZQiRHRmu zPszc}TB|_$TdJoaM+~q&GeuWd*KUB6pv#u>h#0fOuif-KMUYCI%(j(>F^^cX9_qct zz#!pjx8Ts6W&>qERN(;8hsYeeg_O4@Jso|>cAW95gsg0`wPZ-pcK5B-qbtt`jMgd< z2x9qdvy~lTtBn7Q0f2 z*~7!bt5@m>7QAm@z74fMa57vO{RBM_zUYV5^I4(@WD5@?Wj@WD+&18=z)m4Kg-NWp zZ{Nnmux>_hC)a0j$RTNIX`$hnja0kAVDy6r4;Gu~p7W&$u_J0j)TNMIzis%?jL~d6 z^lU48&1Ftwd1GT^YisKa)hr+bBvJ8tK+jgpQE|}?`!2PIl4zeAbi*A|d;$Vdb5E~x zKtT(--E2Jf#I(p@T?ezZ`K6=P1QrMP~gGQU+JZBu522t}8J6jnN zLi!w~{%^-0|7TwNKTQ0;a4RJx|JUT^%J<&?%S>nPeZ)VM_CL&K#^nCF1k0KKSO1#e akjC4qRzK;WBpEJ2NQxmJWZ!@6`F{YLJC&^f literal 0 HcmV?d00001 diff --git a/public/imgs/package/supabase-api/delete-investment.pu b/public/imgs/package/supabase-api/delete-investment.pu new file mode 100644 index 0000000..223c01f --- /dev/null +++ b/public/imgs/package/supabase-api/delete-investment.pu @@ -0,0 +1,10 @@ +@startuml +title DELETE +hide footbox +skinparam monochrome true + +Client -> Server: DELETE /rest/v1/investments?id=eq.1 +note right: DELETE /rest/v1/investments?id=eq.1 HTTP/1.1\nHost: https://xyz.supabase.co\napikey: TOKEN\nAuthorization: Bearer TOKEN +Server -> Client: HTTP/1.1 204 No Content +note left: HTTP/1.1 204 No Content +@enduml diff --git a/public/imgs/package/supabase-api/get-investment.png b/public/imgs/package/supabase-api/get-investment.png new file mode 100644 index 0000000000000000000000000000000000000000..7e6b2439bc3de0520af3f89c43ed8cdcee9150ac GIT binary patch literal 20335 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 literal 0 HcmV?d00001 diff --git a/public/imgs/package/supabase-api/get-investment.pu b/public/imgs/package/supabase-api/get-investment.pu new file mode 100644 index 0000000..ecbd8da --- /dev/null +++ b/public/imgs/package/supabase-api/get-investment.pu @@ -0,0 +1,10 @@ +@startuml +title GET +hide footbox +skinparam monochrome true + +Client -> Server: GET /rest/v1/investments?id=eq.1 +note right: GET /rest/v1/investments?id=eq.1 HTTP/1.1\nHost: https://xyz.supabase.co\napikey: TOKEN\nAuthorization: Bearer TOKEN +Server -> Client: HTTP/1.1 200 OK +note left: HTTP/1.1 200 OK\n\n[\n {\n "id": 1,\n "name": "Tesouro Selic 2029",\n "name": "algorithms",\n "value": 10000,\n "created_at": "2023-09-08T01:58:13.676422+00:00"\n }\n] +@enduml diff --git a/public/imgs/package/supabase-api/get-investments.png b/public/imgs/package/supabase-api/get-investments.png new file mode 100644 index 0000000000000000000000000000000000000000..88a135aa56f6dbb52349b3765b10936fc9f91c90 GIT binary patch literal 20550 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 literal 0 HcmV?d00001 diff --git a/public/imgs/package/supabase-api/get-investments.pu b/public/imgs/package/supabase-api/get-investments.pu new file mode 100644 index 0000000..270894b --- /dev/null +++ b/public/imgs/package/supabase-api/get-investments.pu @@ -0,0 +1,10 @@ +@startuml +title GET +hide footbox +skinparam monochrome true + +Client -> Server: GET /rest/v1/investments?select=* +note right: GET /rest/v1/investments?select=* HTTP/1.1\nHost: https://xyz.supabase.co\napikey: TOKEN\nAuthorization: Bearer TOKEN +Server -> Client: HTTP/1.1 200 OK +note left: HTTP/1.1 200 OK\n\n[\n {\n "id": 1,\n "name": "Tesouro Selic 2029",\n "name": "algorithms",\n "value": 10000,\n "created_at": "2023-09-08T01:58:13.676422+00:00"\n },\n ...\n] +@enduml diff --git a/public/imgs/package/supabase-api/patch-investment.png b/public/imgs/package/supabase-api/patch-investment.png new file mode 100644 index 0000000000000000000000000000000000000000..8a1eb053a34ec60b7cc59540e9be4cb885f7949e GIT binary patch literal 25698 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 literal 0 HcmV?d00001 diff --git a/public/imgs/package/supabase-api/patch-investment.pu b/public/imgs/package/supabase-api/patch-investment.pu new file mode 100644 index 0000000..4166d82 --- /dev/null +++ b/public/imgs/package/supabase-api/patch-investment.pu @@ -0,0 +1,10 @@ +@startuml +title PATCH +hide footbox +skinparam monochrome true + +Client -> Server: PATCH /rest/v1/investments?id=eq.1 +note right: PATCH /rest/v1/investments?id=eq.1 HTTP/1.1\nHost: https://xyz.supabase.co\napikey: TOKEN\nAuthorization: Bearer TOKEN\nPrefer: return=representation\nContent-Type: application/json\n\n{\n "value": 15000\n} +Server -> Client: HTTP/1.1 200 OK +note left: HTTP/1.1 200 OK\n\n[\n {\n "id": 1,\n "name": "Tesouro Selic 2029",\n "name": "algorithms",\n "value": 15000,\n "created_at": "2023-09-08T01:58:13.676422+00:00"\n }\n] +@enduml diff --git a/public/imgs/package/supabase-api/post-investment.png b/public/imgs/package/supabase-api/post-investment.png new file mode 100644 index 0000000000000000000000000000000000000000..efaa11a44edc61b9ac2aea78227492112d630a3b GIT binary patch literal 26914 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 literal 0 HcmV?d00001 diff --git a/public/imgs/package/supabase-api/post-investment.pu b/public/imgs/package/supabase-api/post-investment.pu new file mode 100644 index 0000000..18c5784 --- /dev/null +++ b/public/imgs/package/supabase-api/post-investment.pu @@ -0,0 +1,10 @@ +@startuml +title POST +hide footbox +skinparam monochrome true + +Client -> Server: POST /rest/v1/investments +note right: POST /rest/v1/investments HTTP/1.1\nHost: https://xyz.supabase.co\napikey: TOKEN\nAuthorization: Bearer TOKEN\nPrefer: return=representation\nContent-Type: application/json\n\n{\n "name": "Tesouro Selic 2029",\n "value": 10000\n} +Server -> Client: HTTP/1.1 201 Created +note left: HTTP/1.1 201 Created\n\n[\n {\n "id": 1,\n "name": "Tesouro Selic 2029",\n "name": "algorithms",\n "value": 10000,\n "created_at": "2023-09-08T01:58:13.676422+00:00"\n }\n] +@enduml diff --git a/src/consts.ts b/src/consts.ts index 623a28b..e80c2f2 100644 --- a/src/consts.ts +++ b/src/consts.ts @@ -17,12 +17,12 @@ export const CLASSNOTE_SLUGS = [ 'package/vite', 'w3c/event-handling', 'w3c/dom-api', + 'w3c/local-storage', 'api/rest', - // 'package/supabase-api', - // 'w3c/fetch-api', - // 'package/axios', - // 'package/supabase-client', - // 'w3c/crud-elements', + 'package/supabase-api', + 'w3c/fetch-api', + 'package/axios', + 'package/supabase-client', // 'react/introduction-react', ]; diff --git a/src/content/classnotes/api/rest/index.mdx b/src/content/classnotes/api/rest/index.mdx index b956b3b..e97fec2 100644 --- a/src/content/classnotes/api/rest/index.mdx +++ b/src/content/classnotes/api/rest/index.mdx @@ -43,16 +43,13 @@ Exemplos: - [{'https://api.github.com/repos/ifpb/ls'}](https://api.github.com/repos/ifpb/ls) {/* - [Exemplo](https://ifpb.github.io/challenges/web/front-end/js/github-profile-comparator/) */} -### Rotas +### Token -| Método | Caminho | Status | Resposta | -| ------ | -------------------------------------- | ------ | --------------------------------------------- | -| POST | `/user/repos` | `201` | Cria um novo repositório | -| GET | `/users/lucachaves/repos` | `200` | Retorna todos os repositórios | -| GET | `/users/lucachaves/repos?type=private` | `200` | Retorna todos os repositórios privados | -| GET | `/repos/lucachaves/ls` | `200` | Retorna o repositório com nome lucachaves/ls | -| PATCH | `/repos/lucachaves/ls` | `200` | Atualiza o repositório com nome lucachaves/ls | -| DELETE | `/repos/lucachaves/ls` | `204` | Exclui o repositório com nome lucachaves/ls | +- [Managing your personal access tokens](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) +- [Authenticating to the REST API](https://docs.github.com/en/rest/overview/authenticating-to-the-rest-api?apiVersion=2022-11-28) + - [Authenticating with a personal access token](https://docs.github.com/en/rest/overview/authenticating-to-the-rest-api?apiVersion=2022-11-28#authenticating-with-a-personal-access-token) +- [Quickstart for GitHub REST API](https://docs.github.com/en/rest/quickstart?apiVersion=2022-11-28) + - [Getting started using curl](https://docs.github.com/en/rest/quickstart?apiVersion=2022-11-28#getting-started-using-curl) ### HTTP @@ -75,27 +72,30 @@ Exemplos de Códigos | `404` | Not Found | O servidor não pode encontrar o recurso solicitado | | `500` | Internal Server Error | O servidor encontrou uma situação com a qual não sabe lidar. | -### Token - -- [Managing your personal access tokens](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) -- [Authenticating to the REST API](https://docs.github.com/en/rest/overview/authenticating-to-the-rest-api?apiVersion=2022-11-28) - - [Authenticating with a personal access token](https://docs.github.com/en/rest/overview/authenticating-to-the-rest-api?apiVersion=2022-11-28#authenticating-with-a-personal-access-token) -- [Quickstart for GitHub REST API](https://docs.github.com/en/rest/quickstart?apiVersion=2022-11-28) - - [Getting started using curl](https://docs.github.com/en/rest/quickstart?apiVersion=2022-11-28#getting-started-using-curl) ### Rotas +| Método | Caminho | Status | Resposta | +| ------ | -------------------------------------- | ------ | --------------------------------------------- | +| POST | `/user/repos` | `201` | Cria um novo repositório | +| GET | `/users/lucachaves/repos` | `200` | Retorna todos os repositórios | +| GET | `/users/lucachaves/repos?type=private` | `200` | Retorna todos os repositórios privados | +| GET | `/repos/lucachaves/ls` | `200` | Retorna o repositório com nome lucachaves/ls | +| PATCH | `/repos/lucachaves/ls` | `200` | Atualiza o repositório com nome lucachaves/ls | +| DELETE | `/repos/lucachaves/ls` | `204` | Exclui o repositório com nome lucachaves/ls | + ### Create a repository ![](/ls/imgs/api/rest/github-post-repository.png) ```http +@host=https://api.github.com @token={{$dotenv GITHUB_TOKEN}} @username=lucachaves @repo=github-repo-api ### -POST https://api.github.com/user/repos +POST {{host}}/user/repos Accept: application/vnd.github+json Authorization: Bearer {{token}} X-GitHub-Api-Version: 2022-11-28 @@ -128,11 +128,12 @@ $ curl -L \ ![](/ls/imgs/api/rest/github-get-repositories.png) ```http +@host=https://api.github.com @token={{$dotenv GITHUB_TOKEN}} @username=lucachaves ### -GET https://api.github.com/users/{{username}}/repos +GET {{host}}/users/{{username}}/repos Accept: application/vnd.github+json Authorization: Bearer {{token}} X-GitHub-Api-Version: 2022-11-28 @@ -153,13 +154,14 @@ $ curl -L \ ![](/ls/imgs/api/rest/github-get-repository.png) ```http +@host=https://api.github.com @token={{$dotenv GITHUB_TOKEN}} @username=lucachaves @repo=github-repo-api ### -GET https://api.github.com/repos/{{username}}/{{repo}} +GET {{host}}/repos/{{username}}/{{repo}} Accept: application/vnd.github+json Authorization: Bearer {{token}} X-GitHub-Api-Version: 2022-11-28 @@ -181,12 +183,13 @@ $ curl -L \ ![](/ls/imgs/api/rest/github-patch-repository.png) ```http +@host=https://api.github.com @token={{$dotenv GITHUB_TOKEN}} @username=lucachaves @repo=github-repo-api ### -PATCH https://api.github.com/repos/{{username}}/{{repo}} +PATCH {{host}}/repos/{{username}}/{{repo}} Accept: application/vnd.github+json Authorization: Bearer {{token}} X-GitHub-Api-Version: 2022-11-28 @@ -219,12 +222,13 @@ $ curl -L \ ![](/ls/imgs/api/rest/github-delete-repository.png) ```http +@host=https://api.github.com @token={{$dotenv GITHUB_TOKEN}} @username=lucachaves @repo=github-repo-api ### -DELETE https://api.github.com/repos/{{username}}/{{repo}} +DELETE {{host}}/repos/{{username}}/{{repo}} Accept: application/vnd.github+json Authorization: Bearer {{token}} X-GitHub-Api-Version: 2022-11-28 diff --git a/src/content/classnotes/package/axios/index.mdx b/src/content/classnotes/package/axios/index.mdx index e8969bf..66b45fe 100644 --- a/src/content/classnotes/package/axios/index.mdx +++ b/src/content/classnotes/package/axios/index.mdx @@ -2,7 +2,138 @@ title: Axios --- -import CodePreview from '../../../../components/CodePreview.astro'; -import CodeTree from '../../../../components/CodeTree.astro'; - # {frontmatter.title} + +### Axios Config + +[axios](https://axios-http.com/) + +```bash +$ npm install axios +``` + +```js title="/service/api.js" +import axios from 'axios'; + +const API_KEY = 'abc'; +const API_URL = 'https://xyz.supabase.co/rest/v1'; + +export default axios.create({ + baseURL: API_URL, + headers: { + common: { + apikey: '${API_KEY}' + Authorization: 'Bearer ${API_KEY}' + }, + post: { + Prefer: 'return=representation' + }, + patch: { + Prefer: 'return=representation' + }, + } +}); +``` + +### Front-end + +```js title="/service/api.js" +import API from '/services/api.js'; + +async function create(resource, data) {} +async function read(resource) {} +async function update(resource, data) {} +async function remove(resource) {} + +export default { create, read, update, remove }; +``` + +### Create a investment + +![](/ls/imgs/package/supabase-api/post-investment.png) + +[Axios - POST Request](https://axios-http.com/docs/post_example) + +```js +async function create(resource, data) { + const { newData } = await api.post(resource, data); + + return newData; +} +``` + +```js +import API from './service/api.js'; + +const investment = { + name: "Tesouro Selic 2029", + value: 10000, +}; + +API.create('investments', investment); +``` + +### Read investments + +![](/ls/imgs/package/supabase-api/get-investments.png) + +[Axios - GET Request](https://axios-http.com/docs/example) + +```js +async function read(resource) { + const { data } = await api.get(resource); + + return data; +} +``` + +```js +import API from './service/api.js'; + +API.read('investments'); +API.read('investments/?id=eq.1'); +``` + +### Update a investment + +![](/ls/imgs/package/supabase-api/patch-investment.png) + +[Axios - PATCH Request](https://axios-http.com/docs/api_intro) + +```js +async function update(resource, data) { + const { newData } = await api.patch(resource, data); + + return newData; +} +``` + +```js +import API from './service/api.js'; + +API.update('investments/?id=eq.1', { value: 15000 }); +``` + +### Delete a investment + +![](/ls/imgs/package/supabase-api/delete-investment.png) + +[Axios - DELETE Resquest](https://axios-http.com/docs/api_intro) + +```js +async function remove(resource) { + const { error } = await API.delete(resource); + + if (error) { + throw error; + } else { + return true; + } +} +``` + +```js +import API from './service/api.js'; + +API.remove('investments/?id=eq.1'); +``` diff --git a/src/content/classnotes/package/supabase-api/index.mdx b/src/content/classnotes/package/supabase-api/index.mdx index c926794..478a9a0 100644 --- a/src/content/classnotes/package/supabase-api/index.mdx +++ b/src/content/classnotes/package/supabase-api/index.mdx @@ -2,7 +2,206 @@ title: Supabase API --- -import CodePreview from '../../../../components/CodePreview.astro'; -import CodeTree from '../../../../components/CodeTree.astro'; - # {frontmatter.title} + +## Serviços para Dados + +[Serveless API](https://supabase.com/docs/guides/api): +- [REST API](https://supabase.com/docs/guides/api#rest-api-overview) + - [PostgREST](https://postgrest.org/en/stable/) + - [Tables and Views](https://postgrest.org/en/stable/references/api/tables_views.html#) + - [Build an API](https://supabase.com/docs/guides/api/quickstart) +- GraphQL API +- Realtime API + +## Finance API + +### Banco de Dados + +https://supabase.com/dashboard/projects + +```sql +create table investments ( + id serial primary key, + name character varying null, + value bigint null, + created_at timestamp with time zone not null default now(), + ); +``` + +```sql +insert into investments (name, value) +values + ('Tesouro Selic 2029', 100000), + ('Tesouro IPCA 2029', 10000); +``` + +### Permitir Acesso Anônimo + +[Row Level Security](https://supabase.com/docs/guides/auth/row-level-security) (Authentication > Configuration > Policies): + +```text +-- Turn on security +alter table "investments" +enable row level security; + +-- Allow anonymous access +CREATE POLICY "Allow anonymous access" + ON investments + FOR SELECT + TO anon + USING (true); +``` + +### Rotas + +| Método | Caminho | Status | Resposta | +| ------ | ------------------------------------- | ------ | ---------------------------------------------- | +| POST | `/rest/v1/investments` | `201` | Cria um novo investimento | +| GET | `/rest/v1/investments?select=*` | `200` | Retorna todos os investimentos | +| GET | `/rest/v1/investments?value=gt.10000` | `200` | Retorna todos os investimentos maior que 10000 | +| GET | `/rest/v1/investments?id=eq.1` | `200` | Retorna o investimento com id igual a 1 | +| PATCH | `/rest/v1/investments?id=eq.1` | `200` | Atualiza o investimento com id igual a 1 | +| DELETE | `/rest/v1/investments?id=eq.1` | `204` | Exclui o investimento com id igual a 1 | + +### Create a investment + +![](/ls/imgs/package/supabase-api/post-investment.png) + +```http +@host = https://xyz.supabase.co +@token = {{$dotenv SUPABASE_KEY}} + +### Create a investment +POST {{host}}/rest/v1/investments +apikey: {{token}} +Authorization: Bearer {{token}} +Content-Type: application/json +Prefer: return=representation + +{ + "name": "Tesouro Selic 2029", + "value": 10000 +} +``` + +```bash +$ SUPABASE_KEY=abc +$ curl -X POST 'https://xyz.supabase.co/rest/v1/investments' \ + -H "apikey: ${SUPABASE_KEY}" \ + -H "Authorization: Bearer ${SUPABASE_KEY}" \ + -H "Content-Type: application/json" \ + -H "Prefer: return=representation" \ + -d '{ "name": "Tesouro Selic 2029", "value": 10000 }' +``` + +Return +- `Prefer: return=minimal` +- `Prefer: return=headers-only` +- `Prefer: return=representation` + +[PostgREST - Table and Views - Insert](https://postgrest.org/en/stable/references/api/tables_views.html#insert) + +### Read investments + +![](/ls/imgs/package/supabase-api/get-investments.png) + +```http +@host = https://xyz.supabase.co +@token = {{$dotenv SUPABASE_KEY}} +@createdInvestmentId = {{readInvestments.response.body.$[0].id}} + +### Read investments +# @name readInvestments +GET {{host}}/rest/v1/investments?select=* +apikey: {{token}} +Authorization: Bearer {{token}} +``` + +```bash +$ SUPABASE_KEY=abc +$ curl 'https://xyz.supabase.co/rest/v1/investments?select=*' \ + -H "apikey: ${SUPABASE_KEY}" \ + -H "Authorization: Bearer ${SUPABASE_KEY}" +``` + +[PostgREST - Table and Views - Read](https://postgrest.org/en/stable/references/api/tables_views.html#read) + +### Read a investment + +![](/ls/imgs/package/supabase-api/get-investment.png) + +```http +@host = https://xyz.supabase.co +@token = {{$dotenv SUPABASE_KEY}} +@createdInvestmentId = {{readInvestments.response.body.$[0].id}} + +### Read a investment +GET {{host}}/rest/v1/investments?id=eq.{{createdInvestmentId}} +apikey: {{token}} +Authorization: Bearer {{token}} +``` + +```bash +$ SUPABASE_KEY=abc +$ curl 'https://xyz.supabase.co/rest/v1/investments?id=eq.1' \ + -H "apikey: ${SUPABASE_KEY}" \ + -H "Authorization: Bearer ${SUPABASE_KEY}" +``` + +[PostgREST - Table and Views - Read](https://postgrest.org/en/stable/references/api/tables_views.html#read) + +### Update a investment + +![](/ls/imgs/package/supabase-api/patch-investment.png) + +```http +### Update a investment +PATCH {{host}}/rest/v1/investments?id=eq.{{createdInvestmentId}} +apikey: {{token}} +Authorization: Bearer {{token}} +Content-Type: application/json +Prefer: return=representation + +{ + "value": 15000 +} +``` + +```bash +$ SUPABASE_KEY=abc +$ curl -X PATCH 'https://xyz.supabase.co/rest/v1/investments?some_column=eq.someValue' \ + -H "apikey: ${SUPABASE_KEY}" \ + -H "Authorization: Bearer ${SUPABASE_KEY}"\ + -H "Content-Type: application/json" \ + -H "Prefer: return=representation" \ + -d '{ "value": 15000 }' +``` + +[PostgREST - Table and Views - Update](https://postgrest.org/en/stable/references/api/tables_views.html#update) + +### Delete a investment + +![](/ls/imgs/package/supabase-api/delete-investment.png) + +```http +@host = https://xyz.supabase.co +@token = {{$dotenv SUPABASE_KEY}} +@createdInvestmentId = {{readInvestments.response.body.$[0].id}} + +### Delete a investment +### Delete a investment +DELETE {{host}}/rest/v1/investments?id=eq.{{createdInvestmentId}} +apikey: {{token}} +Authorization: Bearer {{token}} +``` + +```bash +$ SUPABASE_KEY=abc +$ curl -X DELETE 'https://xyz.supabase.co/rest/v1/investments?some_column=eq.someValue' \ + -H "apikey: ${SUPABASE_KEY}" \ + -H "Authorization: Bearer ${SUPABASE_KEY}" +``` + +[PostgREST - Table and Views - Delete](https://postgrest.org/en/stable/references/api/tables_views.html#delete) + diff --git a/src/content/classnotes/package/supabase-client/index.mdx b/src/content/classnotes/package/supabase-client/index.mdx index ade0423..c28d652 100644 --- a/src/content/classnotes/package/supabase-client/index.mdx +++ b/src/content/classnotes/package/supabase-client/index.mdx @@ -2,7 +2,156 @@ title: Supabase Client --- -import CodePreview from '../../../../components/CodePreview.astro'; -import CodeTree from '../../../../components/CodeTree.astro'; - # {frontmatter.title} + +### Supabase JavaScript Client + +JavaScript Client Library: [@supabase/supabase-js](https://supabase.com/docs/reference/javascript/introduction) + +```bash +$ npm install @supabase/supabase-js +``` + +```js +import { createClient } from '@supabase/supabase-js'; + +const supabase = createClient( + 'https://xyz.supabase.co', + 'public-anon-key' +); + +const { data, error } = await supabase + .from('investments') + .select(); + +console.log(data); +``` + +### Front-end + +```js title="/service/api.js" +import { createClient } from '@supabase/supabase-js'; + +const API_KEY = 'abc'; +const API_URL = 'https://qxxivxowaxwsgeruydka.supabase.co/rest/v1'; + +const supabase = createClient(API_URL, API_KEY); + +async function create(resource, data) {} +async function read(resource) {} +async function update(resource, data) {} +async function remove(resource) {} + +export default { create, read, update, remove }; +``` + +### Create a investment + +![](/ls/imgs/package/supabase-api/post-investment.png) + +[Supabase - JavaScript Client - Insert](https://supabase.com/docs/reference/javascript/insert) + +```js +async function create(resource, data) { + const { data: newData, error } = await supabase + .from(resource) + .insert(data) + .select('*' ); + + if (error) { + throw error; + } + + return newData?.[0]; +} +``` + +```js +import API from './service/api.js'; + +const investment = { + name: "Tesouro Selic 2029", + value: 10000, +}; + +API.create('investments', investment); +``` + +### Read investments + +![](/ls/imgs/package/supabase-api/get-investments.png) + +[Supabase - JavaScript Client - Fetch data](https://supabase.com/docs/reference/javascript/select) + +```js +async function read(resource) { + const { data, error } = await supabase + .from(resource) + .select('*'); + + if (error) { + throw error; + } + + return data; +} +``` + +```js +import API from './service/api.js'; + +API.read('investments'); +API.read('investments/?id=eq.1'); +``` + +### Update a investment + +![](/ls/imgs/package/supabase-api/patch-investment.png) + +[Supabase - JavaScript Client - Update](https://supabase.com/docs/reference/javascript/update) + +```js +async function update(resource, id, data) { + const { newData, error } = await supabase + .from(resource) + .update(data) + .eq('id', id) + .select('*'); + + if (error) { + throw error; + } + + return newData; +} +``` + +```js +import API from './service/api.js'; + +API.update('investments/?id=eq.1', { value: 15000 }); +``` + +### Delete a investment + +![](/ls/imgs/package/supabase-api/delete-investment.png) + +[Supabase - JavaScript Client - Delete](https://supabase.com/docs/reference/javascript/delete) + +```js +async function remove(resource, id) { + const { error } = await supabase.from(resource).delete().eq('id', id); + + if (error) { + throw error; + } else { + return true; + } +} +``` + +```js +import API from './service/api.js'; + +API.remove('investments/?id=eq.1'); +``` diff --git a/src/content/classnotes/w3c/fetch-api/index.mdx b/src/content/classnotes/w3c/fetch-api/index.mdx index e6f8bea..4d9d8bd 100644 --- a/src/content/classnotes/w3c/fetch-api/index.mdx +++ b/src/content/classnotes/w3c/fetch-api/index.mdx @@ -3,3 +3,175 @@ title: Requisição Assíncrona --- # {frontmatter.title} + +### Fetch API + +[Fetch API | MDN](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) + +```js +fetch(resource) +fetch(resource, options) +``` + +Exemplo + +```js +const cep = '58015430'; + +const resource = `https://viacep.com.br/ws/${cep}/json/`; + +fetch(resource) + .then((res) => res.json()) + .then((data) => console.log(data)); +``` + +```js +async getCep(cep) { + const resource = `https://viacep.com.br/ws/${cep}/json/`; + + const res = await fetch(resource); + + return await res.json(); +} + +const data = await getCep('58015430'); + +console.log(data); +``` + +### Front-end + +```js title="/service/api.js" +const API_URL = 'https://xyz.supabase.co/rest/v1'; + +async function create(resource, data) {} +async function read(resource) {} +async function update(resource, data) {} +async function remove(resource) {} + +export default { create, read, update, remove }; +``` + +### Create a investment + +![](/ls/imgs/package/supabase-api/post-investment.png) + +```js +async function create(resource, data) { + resource = `${API_URL}/${resource}`; + + const options = { + method: 'post', + body: JSON.stringify(data), + headers: { + 'Content-Type': 'application/json; charset=UTF-8', + apikey: '${token}' + Authorization: 'Bearer ${token}' + Prefer: 'return=representation' + }, + }; + + const res = await fetch(resource, options); + + return await res.json(); +} +``` + +```js +import API from './service/api.js'; + +const investment = { + name: "Tesouro Selic 2029", + value: 10000, +}; + +API.create('investments', investment); +``` + +### Read investments + +![](/ls/imgs/package/supabase-api/get-investments.png) + +```js +async function read(resource) { + resource = `${API_URL}/${resource}`; + + const options = { + method: 'get', + headers: { + apikey: '${token}' + Authorization: 'Bearer ${token}' + }, + }; + + const res = await fetch(resource, options); + + return await res.json(); +} +``` + +```js +import API from './service/api.js'; + +API.read('investments'); +API.read('investments/?id=eq.1'); +``` + +### Update a investment + +![](/ls/imgs/package/supabase-api/patch-investment.png) + +```js +async function update(resource, data) { + resource = `${API_URL}/${resource}`; + + const options = { + method: 'patch', + body: JSON.stringify(data), + headers: { + 'Content-Type': 'application/json; charset=UTF-8', + apikey: '${token}' + Authorization: 'Bearer ${token}' + Prefer: 'return=representation' + }, + }; + + const res = await fetch(resource, options); + + return await res.json(); +} +``` + +```js +import API from './service/api.js'; + +API.update('investments/?id=eq.1', { value: 15000 }); +``` + +### Delete a investment + +![](/ls/imgs/package/supabase-api/delete-investment.png) + +```js +async function remove(resource) { + resource = `${API_URL}/${resource}`; + + const options = { + method: 'delete', + headers: { + apikey: '${token}' + Authorization: 'Bearer ${token}' + }, + }; + + const res = await fetch(resource, options); + + return res.ok; +} +``` + +```js +import API from './service/api.js'; + +API.remove('investments/?id=eq.1'); +``` diff --git a/src/content/classnotes/w3c/crud-elements/index.mdx b/src/content/classnotes/w3c/local-storage/index.mdx similarity index 86% rename from src/content/classnotes/w3c/crud-elements/index.mdx rename to src/content/classnotes/w3c/local-storage/index.mdx index 131b3e5..19d0fdf 100644 --- a/src/content/classnotes/w3c/crud-elements/index.mdx +++ b/src/content/classnotes/w3c/local-storage/index.mdx @@ -1,5 +1,5 @@ --- -title: CRUD de Elementos +title: Local Storage --- import CodePreview from '../../../../components/CodePreview.astro';