Messing around with queries and components
All checks were successful
Vercel Production Deployment / Deploy-Production (push) Successful in 2m25s
All checks were successful
Vercel Production Deployment / Deploy-Production (push) Successful in 2m25s
This commit is contained in:
parent
0f0ce967b6
commit
f4cf2f3adc
44
package-lock.json
generated
44
package-lock.json
generated
@ -50,9 +50,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/runtime": {
|
"node_modules/@babel/runtime": {
|
||||||
"version": "7.24.5",
|
"version": "7.24.6",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.6.tgz",
|
||||||
"integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==",
|
"integrity": "sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"regenerator-runtime": "^0.14.0"
|
"regenerator-runtime": "^0.14.0"
|
||||||
@ -1391,9 +1391,9 @@
|
|||||||
"devOptional": true
|
"devOptional": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/react": {
|
"node_modules/@types/react": {
|
||||||
"version": "18.3.2",
|
"version": "18.3.3",
|
||||||
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz",
|
||||||
"integrity": "sha512-Btgg89dAnqD4vV7R3hlwOxgqobUQKgx3MmrQRi0yYbs/P0ym8XozIAlkqVilPqHQwXs4e9Tf63rrCgl58BcO4w==",
|
"integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==",
|
||||||
"devOptional": true,
|
"devOptional": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/prop-types": "*",
|
"@types/prop-types": "*",
|
||||||
@ -3971,6 +3971,7 @@
|
|||||||
"version": "1.0.6",
|
"version": "1.0.6",
|
||||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||||
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
|
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
|
||||||
|
"deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"once": "^1.3.0",
|
"once": "^1.3.0",
|
||||||
@ -4613,19 +4614,22 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/memoizee": {
|
"node_modules/memoizee": {
|
||||||
"version": "0.4.15",
|
"version": "0.4.17",
|
||||||
"resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz",
|
"resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.17.tgz",
|
||||||
"integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==",
|
"integrity": "sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"d": "^1.0.1",
|
"d": "^1.0.2",
|
||||||
"es5-ext": "^0.10.53",
|
"es5-ext": "^0.10.64",
|
||||||
"es6-weak-map": "^2.0.3",
|
"es6-weak-map": "^2.0.3",
|
||||||
"event-emitter": "^0.3.5",
|
"event-emitter": "^0.3.5",
|
||||||
"is-promise": "^2.2.2",
|
"is-promise": "^2.2.2",
|
||||||
"lru-queue": "^0.1.0",
|
"lru-queue": "^0.1.0",
|
||||||
"next-tick": "^1.1.0",
|
"next-tick": "^1.1.0",
|
||||||
"timers-ext": "^0.1.7"
|
"timers-ext": "^0.1.7"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.12"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/merge2": {
|
"node_modules/merge2": {
|
||||||
@ -4675,9 +4679,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/minipass": {
|
"node_modules/minipass": {
|
||||||
"version": "7.1.1",
|
"version": "7.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
|
||||||
"integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==",
|
"integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=16 || 14 >=14.17"
|
"node": ">=16 || 14 >=14.17"
|
||||||
@ -6205,16 +6209,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/sucrase/node_modules/glob": {
|
"node_modules/sucrase/node_modules/glob": {
|
||||||
"version": "10.3.16",
|
"version": "10.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/glob/-/glob-10.3.16.tgz",
|
"resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz",
|
||||||
"integrity": "sha512-JDKXl1DiuuHJ6fVS2FXjownaavciiHNUU4mOvV/B793RLh05vZL1rcPnCSaOgv1hDT6RDlY7AB7ZUvFYAtPgAw==",
|
"integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"foreground-child": "^3.1.0",
|
"foreground-child": "^3.1.0",
|
||||||
"jackspeak": "^3.1.2",
|
"jackspeak": "^3.1.2",
|
||||||
"minimatch": "^9.0.1",
|
"minimatch": "^9.0.4",
|
||||||
"minipass": "^7.0.4",
|
"minipass": "^7.1.2",
|
||||||
"path-scurry": "^1.11.0"
|
"path-scurry": "^1.11.1"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"glob": "dist/esm/bin.mjs"
|
"glob": "dist/esm/bin.mjs"
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
import { getWines } from "~/server/actions/allWines";
|
|
||||||
|
|
||||||
export const dynamic = "force-dynamic";
|
|
||||||
|
|
||||||
const allWines = await getWines();
|
|
||||||
|
|
||||||
export default function WineCards() {
|
|
||||||
return (
|
|
||||||
<>
|
|
||||||
{allWines.map((wine) => (
|
|
||||||
<div key={wine.id}>
|
|
||||||
{wine.name} - {wine.producer}
|
|
||||||
</div>
|
|
||||||
))}
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
}
|
|
@ -1,16 +1,8 @@
|
|||||||
"use client";
|
"use client";
|
||||||
import { ChangeEvent, FormEvent, useEffect, useState } from "react";
|
import { ChangeEvent, FormEvent, useEffect, useState } from "react";
|
||||||
import { addWine } from "../server/actions/addWine";
|
import { addWine } from "../../server/actions/addWine";
|
||||||
import { getProducers } from "../server/actions/allProducers";
|
import { getProducers } from "../../server/actions/allProducers";
|
||||||
|
import { Producer } from "~/types/types";
|
||||||
interface Producer {
|
|
||||||
id: string;
|
|
||||||
name: string;
|
|
||||||
createdAt: Date;
|
|
||||||
country: string;
|
|
||||||
region: string;
|
|
||||||
email: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export default function CreateWine() {
|
export default function CreateWine() {
|
||||||
const [name, setName] = useState<string>("");
|
const [name, setName] = useState<string>("");
|
19
src/app/_components/WineCards.tsx
Normal file
19
src/app/_components/WineCards.tsx
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
import { getWines } from "../../server/actions/allWines";
|
||||||
|
import WineName from "./WineName";
|
||||||
|
import WineProducer from "./WineProducer";
|
||||||
|
|
||||||
|
const allWines = await getWines();
|
||||||
|
export default async function WineCards() {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<p>{JSON.stringify(allWines)}</p>
|
||||||
|
{allWines.map((wine, i) => {
|
||||||
|
return (
|
||||||
|
<div key={i}>
|
||||||
|
<WineName name={wine.name} /> - <WineProducer id={wine.producer} />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
3
src/app/_components/WineName.tsx
Normal file
3
src/app/_components/WineName.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
export default function WineName(props: { name: string }) {
|
||||||
|
return <p>{props.name}</p>;
|
||||||
|
}
|
8
src/app/_components/WineProducer.tsx
Normal file
8
src/app/_components/WineProducer.tsx
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import { UUID } from "crypto";
|
||||||
|
import { PgUUID } from "drizzle-orm/pg-core";
|
||||||
|
import getProducer from "~/server/actions/getProducer";
|
||||||
|
|
||||||
|
export default async function (props: { id: string }) {
|
||||||
|
const result = await getProducer(props.id);
|
||||||
|
return <p>{result?.name}</p>;
|
||||||
|
}
|
@ -1,5 +1,7 @@
|
|||||||
import CreateWine from "./CreateWine";
|
import CreateWine from "./_components/CreateWine";
|
||||||
import WineCards from "./WineCards";
|
import WineCards from "./_components/WineCards";
|
||||||
|
|
||||||
|
export const dynamic = "force-dynamic";
|
||||||
|
|
||||||
export default async function HomePage() {
|
export default async function HomePage() {
|
||||||
return (
|
return (
|
||||||
|
11
src/server/actions/getProducer.ts
Normal file
11
src/server/actions/getProducer.ts
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
"use server"
|
||||||
|
import { producers } from "../db/schema";
|
||||||
|
import { db } from "../db";
|
||||||
|
import { eq } from "drizzle-orm";
|
||||||
|
|
||||||
|
export default async function getProducer(id: string){
|
||||||
|
return db.query.producers.findFirst({
|
||||||
|
where: eq(producers.id, id)
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
10
src/server/actions/getWineDetails.ts
Normal file
10
src/server/actions/getWineDetails.ts
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
"use server"
|
||||||
|
import { sql } from "drizzle-orm";
|
||||||
|
import { db } from "../db";
|
||||||
|
import { wines, producers } from "../db/schema";
|
||||||
|
import { UUID } from "crypto";
|
||||||
|
|
||||||
|
export async function getWineDetails(id: UUID) {
|
||||||
|
const results = await db.select().from(producers).where(sql `${producers.id} = ${id}`)
|
||||||
|
return results;
|
||||||
|
}
|
@ -37,7 +37,7 @@ export const wines = createTable(
|
|||||||
name: text('name').notNull(),
|
name: text('name').notNull(),
|
||||||
createdAt: timestamp('createdAt').defaultNow().notNull(),
|
createdAt: timestamp('createdAt').defaultNow().notNull(),
|
||||||
updatedAt: timestamp('updatedAt').defaultNow(),
|
updatedAt: timestamp('updatedAt').defaultNow(),
|
||||||
producer: text('producer').notNull(),
|
producer: uuid('producer').notNull(),
|
||||||
},
|
},
|
||||||
(wines) => {
|
(wines) => {
|
||||||
return {
|
return {
|
||||||
|
8
src/types/types.ts
Normal file
8
src/types/types.ts
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
export interface Producer {
|
||||||
|
id: string;
|
||||||
|
name: string;
|
||||||
|
createdAt: Date;
|
||||||
|
country: string;
|
||||||
|
region: string;
|
||||||
|
email: string;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user