aggiunto segnapreso senza auth

This commit is contained in:
blat 2022-08-29 15:42:06 +02:00
parent 4c05e40a73
commit c23e5ac85a
6 changed files with 46 additions and 2 deletions

View file

@ -10,6 +10,6 @@
- [ ] un loading per next / prev
- [ ] immagine del banner da scaricare in locale
- [ ] 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
- [ ] mail in lista

View file

@ -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"
v-text='tag' />
</div>
<toggleTaken :cosetta='cosetta'/>
</div>
</template>

View 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>

View file

@ -39,6 +39,9 @@ onMounted(() => {
</div>
<div class="container mx-auto">
<toggleTaken :cosetta='cosetta'/>
<p class="font-bold text-xl uppercase">chiacchiere</p>
<div class='form-control'>
<div class='input-group'>

View 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 }
}
})

View file

@ -6,7 +6,7 @@ const db = new Database('./cosette.db')
export function load() {
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 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)
return comment
}
export function toggleTaken(uuid) {
const q = db.prepare('UPDATE cosette SET taken = ABS(taken - 1) WHERE uuid = ?')
return q.run(uuid)
}