Adding create album action
All checks were successful
Music Collection CI Workflow / test (./backend) (push) Successful in 22s
Music Collection CI Workflow / test (./frontend) (push) Successful in 19s
Music Collection CI Workflow / build-and-push-images (./backend/Dockerfile, git.anatid.net/tabris/msuic-collection-backend, ./backend) (push) Successful in 48s
Music Collection CI Workflow / build-and-push-images (./frontend/Dockerfile, git.anatid.net/tabris/music-collection-frontend, ./frontend) (push) Successful in 1m18s
Music Collection CI Workflow / deploy (push) Successful in 21s
All checks were successful
Music Collection CI Workflow / test (./backend) (push) Successful in 22s
Music Collection CI Workflow / test (./frontend) (push) Successful in 19s
Music Collection CI Workflow / build-and-push-images (./backend/Dockerfile, git.anatid.net/tabris/msuic-collection-backend, ./backend) (push) Successful in 48s
Music Collection CI Workflow / build-and-push-images (./frontend/Dockerfile, git.anatid.net/tabris/music-collection-frontend, ./frontend) (push) Successful in 1m18s
Music Collection CI Workflow / deploy (push) Successful in 21s
This commit is contained in:
parent
1e4f2875aa
commit
fbe5d54e81
24
frontend/src/app/actions.tsx
Normal file
24
frontend/src/app/actions.tsx
Normal file
@ -0,0 +1,24 @@
|
||||
'use server'
|
||||
|
||||
export async function createAlbum(formData: FormData) {
|
||||
const title = formData.get('title');
|
||||
const artist = formData.get('artist');
|
||||
const genre = formData.get('genre');
|
||||
await fetch("https://api.anatid.net/album", {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({
|
||||
title: title,
|
||||
artist: artist,
|
||||
genre: genre,
|
||||
}),
|
||||
});
|
||||
}
|
||||
//
|
||||
// export async function updateAlbum(formData: FormData) {
|
||||
//
|
||||
// }
|
||||
//
|
||||
// export async function deleteAlbum(formData: FormData) {
|
||||
//
|
||||
// }
|
@ -3,6 +3,7 @@
|
||||
import { useState, useEffect } from 'react';
|
||||
import Link from 'next/link';
|
||||
import { Album } from '@/entities/album.entity';
|
||||
import { CreateAlbumButton } from '@/app/ui/button';
|
||||
|
||||
export default function Page() {
|
||||
const [albums, setAlbums] = useState<Album[]>([]);
|
||||
@ -19,16 +20,19 @@ export default function Page() {
|
||||
if (!albums) return <div>Loading...</div>
|
||||
|
||||
return (
|
||||
<ul>
|
||||
{albums.map((album: Album) => (
|
||||
<li key={album.id}>
|
||||
<Link
|
||||
href={{
|
||||
pathname: `/album/${album.id}`
|
||||
}}
|
||||
>{album.title}
|
||||
</Link> by {album.artist} ({album.genre})</li>
|
||||
))}
|
||||
</ul>
|
||||
<div>
|
||||
<ul>
|
||||
{albums.map((album: Album) => (
|
||||
<li key={album.id}>
|
||||
<Link
|
||||
href={{
|
||||
pathname: `/album/${album.id}`
|
||||
}}
|
||||
>{album.title}
|
||||
</Link> by {album.artist} ({album.genre})</li>
|
||||
))}
|
||||
</ul>
|
||||
{CreateAlbumButton()}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
7
frontend/src/app/ui/button.tsx
Normal file
7
frontend/src/app/ui/button.tsx
Normal file
@ -0,0 +1,7 @@
|
||||
'use client'
|
||||
|
||||
import { createAlbum } from '@/app/actions'
|
||||
|
||||
export function CreateAlbumButton() {
|
||||
return <button formAction={createAlbum}>Create</button>
|
||||
}
|
12
frontend/src/app/ui/form.tsx
Normal file
12
frontend/src/app/ui/form.tsx
Normal file
@ -0,0 +1,12 @@
|
||||
import { createAlbum } from '@/app/actions'
|
||||
|
||||
export function CreateAlbumForm() {
|
||||
return (
|
||||
<form action={createAlbum}>
|
||||
<input type="text" name="title" />
|
||||
<input type="text" name="artist" />
|
||||
<input type="text" name="genre" />
|
||||
<button type="submit">Create</button>
|
||||
</form>
|
||||
)
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user