aggiunto segnapreso senza auth
This commit is contained in:
parent
4c05e40a73
commit
c23e5ac85a
6 changed files with 46 additions and 2 deletions
2
TODO.md
2
TODO.md
|
@ -10,6 +10,6 @@
|
||||||
- [ ] un loading per next / prev
|
- [ ] un loading per next / prev
|
||||||
- [ ] immagine del banner da scaricare in locale
|
- [ ] immagine del banner da scaricare in locale
|
||||||
- [ ] favicon (solo perche' senza ci mette un sacco a fare il load)
|
- [ ] favicon (solo perche' senza ci mette un sacco a fare il load)
|
||||||
- [ ] ci vuole un modo per segnare che un oggetto e' stato preso? forse no se facciamo un'asta live
|
- [x] ci vuole un modo per segnare che un oggetto e' stato preso? forse no se facciamo un'asta live
|
||||||
- [ ] deploy
|
- [ ] deploy
|
||||||
- [ ] mail in lista
|
- [ ] mail in lista
|
||||||
|
|
|
@ -20,5 +20,6 @@ const { cosetta } = defineProps({
|
||||||
class="inline-block bg-gray-200 rounded-full px-3 py-1 text-sm font-semibold text-gray-700 mr-2 mb-2"
|
class="inline-block bg-gray-200 rounded-full px-3 py-1 text-sm font-semibold text-gray-700 mr-2 mb-2"
|
||||||
v-text='tag' />
|
v-text='tag' />
|
||||||
</div>
|
</div>
|
||||||
|
<toggleTaken :cosetta='cosetta'/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
25
components/toggleTaken.vue
Normal file
25
components/toggleTaken.vue
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
<script setup>
|
||||||
|
const { cosetta } = defineProps({
|
||||||
|
cosetta: {
|
||||||
|
type: Object,
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
watch(cosetta, () => { deep: true });
|
||||||
|
|
||||||
|
let toggleTaken = async () => {
|
||||||
|
const ret = await $fetch(`/api/cosetta/${cosetta.uuid}/taken`, { method: 'POST' })
|
||||||
|
const q = await $fetch(`/api/cosetta/${cosetta.uuid}`)
|
||||||
|
cosetta.taken = q.cosetta.taken
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<template>
|
||||||
|
<div class="form-control">
|
||||||
|
<label class="label cursor-pointer flex justify-end">
|
||||||
|
<span class="label-text px-4" v-html="cosetta.taken && 'Cosetta disponibile' || 'Cosetta assegnata'">
|
||||||
|
</span>
|
||||||
|
<input type="checkbox" class="toggle toggle-lg" @click='toggleTaken' :checked='cosetta.taken' />
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</template>
|
|
@ -39,6 +39,9 @@ onMounted(() => {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="container mx-auto">
|
<div class="container mx-auto">
|
||||||
|
|
||||||
|
<toggleTaken :cosetta='cosetta'/>
|
||||||
|
|
||||||
<p class="font-bold text-xl uppercase">chiacchiere</p>
|
<p class="font-bold text-xl uppercase">chiacchiere</p>
|
||||||
<div class='form-control'>
|
<div class='form-control'>
|
||||||
<div class='input-group'>
|
<div class='input-group'>
|
||||||
|
|
10
server/api/cosetta/[uuid]/taken.post.js
Normal file
10
server/api/cosetta/[uuid]/taken.post.js
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
import { toggleTaken } from '../../../controller'
|
||||||
|
|
||||||
|
export default defineEventHandler(async (event) => {
|
||||||
|
try {
|
||||||
|
toggleTaken(event.context.params.uuid)
|
||||||
|
return { success: true }
|
||||||
|
} catch (e) {
|
||||||
|
return { success: false, reason: e.message }
|
||||||
|
}
|
||||||
|
})
|
|
@ -6,7 +6,7 @@ const db = new Database('./cosette.db')
|
||||||
|
|
||||||
export function load() {
|
export function load() {
|
||||||
db.pragma('journal_mode = WAL')
|
db.pragma('journal_mode = WAL')
|
||||||
db.exec('CREATE TABLE IF NOT EXISTS cosette (uuid TEXT PRIMARY KEY, name TEXT NOT NULL, description TEXT, tags TEXT, images TEXT, updatedAt DATETIME DEFAULT CURRENT_TIMESTAMP)')
|
db.exec('CREATE TABLE IF NOT EXISTS cosette (uuid TEXT PRIMARY KEY, name TEXT NOT NULL, description TEXT, tags TEXT, images TEXT, taken TINYINT DEFAULT 0, updatedAt DATETIME DEFAULT CURRENT_TIMESTAMP)')
|
||||||
db.exec('CREATE INDEX IF NOT EXISTS cosette_updated_at_index ON cosette (updatedAt)')
|
db.exec('CREATE INDEX IF NOT EXISTS cosette_updated_at_index ON cosette (updatedAt)')
|
||||||
db.exec('CREATE TABLE IF NOT EXISTS chan (uuid TEXT PRIMARY KEY, cosetta_uuid REFERENCES cosette(uuid), message TEXT, updatedAt DATETIME DEFAULT CURRENT_TIMESTAMP)')
|
db.exec('CREATE TABLE IF NOT EXISTS chan (uuid TEXT PRIMARY KEY, cosetta_uuid REFERENCES cosette(uuid), message TEXT, updatedAt DATETIME DEFAULT CURRENT_TIMESTAMP)')
|
||||||
}
|
}
|
||||||
|
@ -70,3 +70,8 @@ export function getComment(uuid) {
|
||||||
const comment = q.get(uuid)
|
const comment = q.get(uuid)
|
||||||
return comment
|
return comment
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function toggleTaken(uuid) {
|
||||||
|
const q = db.prepare('UPDATE cosette SET taken = ABS(taken - 1) WHERE uuid = ?')
|
||||||
|
return q.run(uuid)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue