Working event base

This commit is contained in:
Alexis
2024-05-22 19:27:43 +02:00
parent 030e3cdc12
commit c0940c4985
12 changed files with 245 additions and 299 deletions

View File

@@ -12,11 +12,13 @@ const worldId = route.params.id
const { setMonths, setDefaultDate, currentConfig, selectedDate, jumpToDate } = useCalendar()
const { setEvents } = useCalendarEvents()
const { setCharacters } = useCharacters()
const { data: calendar, pending, refresh } = await useLazyFetch(`/api/calendars/query?world_id=${worldId}`)
const { data: calendar, pending: calPending, refresh: calRefresh } = await useLazyFetch(`/api/calendars/query?world_id=${worldId}`)
const { data: characters, pending: charPending, refresh: charRefresh } = await useLazyFetch(`/api/characters/query?world_id=${worldId}`)
if (!calendar.value) {
await refresh()
await calRefresh()
} else {
if (calendar.value?.data?.months) {
setMonths(calendar.value?.data?.months)
@@ -28,8 +30,15 @@ if (!calendar.value) {
setEvents(calendar.value?.data?.events)
}
}
if (!characters.value) {
await charRefresh()
} else {
if (characters.value?.data) {
setCharacters(characters.value?.data)
}
}
watch(pending, (newStatus) => {
watch(calPending, (newStatus) => {
if (!newStatus) {
if (calendar.value?.data?.months) {
setMonths(calendar.value?.data?.months)
@@ -42,6 +51,13 @@ watch(pending, (newStatus) => {
}
}
})
watch(charPending, (newStatus) => {
if (!newStatus) {
if (characters.value?.data) {
setCharacters(characters.value?.data)
}
}
})
const currentViewComponent: ComputedRef<Component> = computed<Component>(() => {
switch (currentConfig.viewType) {
@@ -67,7 +83,7 @@ onMounted(() => {
<template>
<div class="h-full">
<template v-if="pending">
<template v-if="calPending || charPending">
<div class="h-full grid place-items-center">
Loading notamment
</div>

View File

@@ -1,16 +1,12 @@
<script lang="ts" setup>
import {
characterCategories,
isCharacter,
type Character,
type CharacterCategory
} from '@/models/Characters'
import type { RPGDateOrder } from '@/models/Date'
import {
calendarEventCategories,
isCalendarEvent,
type CalendarEvent,
type CalendarEventCategory
} from '~/models/CalendarEvent'
import { useCharacters } from '@/stores/CharacterStore'
import { useCalendarEvents } from '@/stores/EventStore'
@@ -29,6 +25,7 @@ import {
} from 'radix-vue'
import SearchList from './lists/SearchList.vue'
import type { Category } from '~/models/Category'
const { characters } = storeToRefs(useCharacters())
const { allEvents } = storeToRefs(useCalendarEvents())
@@ -105,7 +102,7 @@ const searchResults = computed<(Character | CalendarEvent)[]>(() => {
// Handle categories logic
let hitCategories: boolean = false
const allCategories: CalendarEventCategory[] = []
const allCategories: Category[] = []
if (item.category) {
allCategories.push(item.category)
@@ -116,7 +113,7 @@ const searchResults = computed<(Character | CalendarEvent)[]>(() => {
}
hitCategories = selectedCategories.value.every((selectedCat) => {
return allCategories.includes(selectedCat as CalendarEventCategory)
return allCategories.includes(selectedCat as Category)
})
return (hitTitle || hitDesc) && hitCategories
@@ -139,7 +136,7 @@ const searchResults = computed<(Character | CalendarEvent)[]>(() => {
// Handle categories logic
let hitCategories: boolean = false
const allCategories: CharacterCategory[] = []
const allCategories: Category[] = []
if (item.category) {
allCategories.push(item.category)
@@ -150,7 +147,7 @@ const searchResults = computed<(Character | CalendarEvent)[]>(() => {
}
hitCategories = selectedCategories.value.every((selectedCat) => {
return allCategories.includes(selectedCat as CharacterCategory)
return allCategories.includes(selectedCat as Category)
})
return hitTitle && hitCategories
@@ -207,14 +204,10 @@ watch([currentPage, selectedEntity], () => {
// Compute categories based on current selectedEntity
const currentCategories = computed(() => {
if (selectedEntity.value === 'characters') {
return [...characterCategories]
} else {
return [...calendarEventCategories]
}
return []
})
const selectedCategories = ref<(CharacterCategory | CalendarEventCategory)[]>([])
const selectedCategories = ref<(Category)[]>([])
const categoryFilterOpened = ref<boolean>(false)
const searchCategory = ref<string>('')
@@ -227,7 +220,7 @@ const filteredCategories = computed(() =>
*
* @param e Radix Change Event
*/
function handleCategorySelect(e: (CharacterCategory | CalendarEventCategory)) {
function handleCategorySelect(e: (Category)) {
if (typeof e === 'string') {
searchCategory.value = ''
selectedCategories.value.push(e)
@@ -290,9 +283,9 @@ function handleCategorySelect(e: (CharacterCategory | CalendarEventCategory)) {
</div>
<div class="flex items-center gap-1">
<UiTagsInput class="px-0 gap-0 w-72" :model-value="selectedCategories">
<UiTagsInput class="px-0 gap-0 w-72">
<div class="flex gap-2 flex-wrap items-center px-3">
<UiTagsInputItem v-for="item in selectedCategories" :key="item" :value="item">
<UiTagsInputItem v-for="item in selectedCategories" :key="item.id" :value="item.name">
<UiTagsInputItemText class="capitalize" />
<UiTagsInputItemDelete />
</UiTagsInputItem>

View File

@@ -7,7 +7,7 @@ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/comp
import { Button } from '@/components/ui/button'
import { PhArrowSquareOut, PhPlant, PhSkull } from '@phosphor-icons/vue'
defineProps<{
const props = defineProps<{
character: Character
}>()
@@ -16,6 +16,8 @@ defineEmits<{
}>()
const { getFormattedDateTitle } = useCalendar()
console.log(props.character.birth)
</script>
<template>

View File

@@ -24,7 +24,7 @@ const dateDuration: string | null = props.event.endDate
</script>
<template>
<Uibutton
<button
class="relative block w-full text-left py-3 px-4 rounded-sm transition-colors"
:class="{
'text-white bg-slate-600 hover:bg-slate-700': !event.category,
@@ -110,5 +110,5 @@ const dateDuration: string | null = props.event.endDate
{{ event.description }}
</span>
</div>
</Uibutton>
</button>
</template>

View File

@@ -12,21 +12,8 @@ export interface Character {
secondaryCategories?: Category[]
wiki?: string
}
export const characterCategories = [
'joueur',
'comte',
'scientifique',
'mage',
'professeur',
'criminel',
'étincelle',
'buse blanche',
'ecclésiastique',
'sentinelle'
] as const
export type CharacterCategory = (typeof characterCategories)[number]
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export function isCharacter(object: any): object is Character {
return 'birth' in object
}

View File

@@ -1,4 +1,5 @@
<script lang="ts" setup>
import { PhMagnifyingGlass } from '@phosphor-icons/vue';
import type { MenuItem } from '~/components/global/SidebarProps';
useHead({
@@ -16,7 +17,16 @@ watch(user, (n, _o) => {
}
})
const sidebarMenu: MenuItem[] = []
const { revealAdvancedSearch } = useCalendar()
const { isAdvancedSearchOpen } = storeToRefs(useCalendar())
const sidebarMenu: MenuItem[] = [
{
phIcon: PhMagnifyingGlass,
tooltip: 'Recherche avancée',
clickHandler: revealAdvancedSearch
}
]
</script>
<template>
@@ -24,5 +34,7 @@ const sidebarMenu: MenuItem[] = []
<Sidebar :menu-items="sidebarMenu" />
<Calendar />
<CalendarSearch v-model:model-value="isAdvancedSearchOpen" />
</div>
</template>

View File

@@ -1,18 +0,0 @@
import { serverSupabaseClient } from "#supabase/server";
import type { Character } from "~/models/Characters";
export default defineEventHandler(async (event) => {
const client = await serverSupabaseClient(event)
return client.from('characters')
.select(`
id,
name,
description,
birth,
death,
wiki,
characters_category (id, name)
`)
.returns<Character[]>()
})

View File

@@ -1,5 +1,6 @@
import { serverSupabaseClient } from "#supabase/server";
import { z } from 'zod'
import type { Character } from "~/models/Characters";
const querySchema = z.object({
world_id: z.number({ coerce: true }).positive().int()
@@ -18,12 +19,13 @@ export default defineEventHandler(async (event) => {
birth,
death,
wiki,
characters_category (id, name)
category:character_categories!characters_category_fkey (*),
secondaryCategories:character_categories!character_categories_links (*)
`)
if (query.world_id) {
output.eq('world_id', query.world_id)
}
return output
return output.returns<Character[]>()
})

View File

@@ -1,217 +0,0 @@
export default defineEventHandler(() => {
return [
// Histoire Antique
{
title: "Laurdieu devient la première cité de l'empire de Kaliatos",
startDate: { day: 3, month: 4, year: -1932 },
description:
"L'empire de Kaliatos établi sa capitale dans la cité de Laurdieu, qui connaitra une prospérité nouvelle au sein d'Aldys.",
category: 'législation',
secondaryCategories: ['inauguration'],
wiki: 'https://alexcreates.fr/leim/index.php/Laurdieu',
hidden: true
},
{
title: "Apparition d'Asménys",
startDate: { day: 19, month: 7, year: -1358 },
description:
"La défunte chanteuse Asménys apparaît à un barde pendant son jeune public, démarrant la religion des Prêtresses d'Asménys.",
category: 'religion',
secondaryCategories: ['bénédiction'],
wiki: 'https://alexcreates.fr/leim/index.php/Pr%C3%AAtresses_d%27Asm%C3%A9nys',
hidden: true
},
{
title: 'La Rupture',
startDate: { day: 26, month: 5, year: -756 },
endDate: { day: 4, month: 9, year: 29 },
description:
"Les Abysses se déversent à la surface de Léim, à travers plusieurs brèches. Plusieurs hordes de démons se rapprochent des villes, et ce qu'on appellera l'Âge des Abysses commencent alors sur la planète entière.",
category: 'catastrophe',
secondaryCategories: ['catastrophe naturelle'],
wiki: 'https://alexcreates.fr/leim/index.php/Seconde_Rupture',
hidden: true
},
{
title: 'Marche du sang',
startDate: { day: 18, month: 9, year: -420 },
endDate: { day: 27, month: 1, year: -419 },
description:
"L'empereur de Kaliatos ordonne personnellement la traque de Jorhas Kirendre pour connivence avec les démons. Plusieurs bataillons sont affectés à la chasse de Jorhas, qui se terminera par son incarcération ainsi que la mort de plusieurs centaines de soldats.",
category: 'criminalité',
wiki: 'https://alexcreates.fr/leim/index.php/Jorhas_Kirendre',
hidden: true
},
{
title: 'Exécution de Tyhos',
startDate: { day: 1, month: 0, year: 0 },
description:
"Le léviathan Tyhos rend l'âme après un combat de plusieurs années contre Lystos, le dieu du Soleil.",
category: 'bénédiction',
secondaryCategories: ['mort'],
wiki: 'https://alexcreates.fr/leim/index.php/Tyhos',
hidden: true
},
{
title: 'Traité de Kadel',
startDate: { day: 29, month: 4, year: 100 },
description: '',
category: 'inauguration',
secondaryCategories: ['législation'],
wiki: 'https://alexcreates.fr/leim/index.php/Alliance_Kald%C3%A9lienne#Trait%C3%A9_de_Kadel'
},
{
title: 'Découverte des Plaines de Poussières',
startDate: { day: 17, month: 7, year: 305 },
description:
"Les troupes de la reconquête aldienne explorent le littoral d'une immense étendue grise et inerte.",
category: 'découverte',
secondaryCategories: ['exploration'],
wiki: 'https://alexcreates.fr/leim/index.php/Plaines_de_poussi%C3%A8re',
hidden: true
},
{
title: 'Construction du Rempart de Laurdieu',
startDate: { day: 30, month: 2, year: 340 },
endDate: { day: 27, month: 9, year: 355 },
description:
"Le Grand Conseil Kaldélien ordonne la construction d'une muraille autour des Plaines de Poussières, afin de contenir les démons y sortant.",
category: 'construction',
wiki: 'https://alexcreates.fr/leim/index.php/Plaines_de_poussi%C3%A8re',
hidden: true
},
// Histoire Récente
{
title: "Inauguration de l'Académie Artistique Arcanique",
startDate: { day: 11, month: 6, year: 2545 },
description:
"Scäd Sceni ouvre son institut artistique dédié à l'apprentissage des arts arcaniques",
category: 'inauguration',
secondaryCategories: ['arcanologie'],
wiki: 'https://alexcreates.fr/leim/index.php/Buse_(arme)'
},
{
title: 'Création de la buse kaldélienne',
startDate: { day: 4, month: 2, year: 3113 },
description:
'Sophia de Rougefer invente la buse kaldélienne, une arme à feu souple à deux canons.',
category: 'invention',
secondaryCategories: ['science'],
wiki: 'https://alexcreates.fr/leim/index.php/Buse_(arme)'
},
{
title: 'Feux dans les champs de Bamast',
startDate: { day: 9, month: 5, year: 3200 },
description:
"Plusieurs incendies criminels se propagent à travers les champs de sérille des fermiers des littoraux de Bamast. Aucun suspect ni coupable ne sera trouvé et l'enquête sera baclée.",
category: 'catastrophe',
secondaryCategories: ['criminalité'],
wiki: 'https://alexcreates.fr/leim/index.php/Vascylly'
},
{
title: 'Meurtre de Darléon Typhos',
startDate: { day: 21, month: 6, year: 3200 },
description:
'Darléon Typhos surprend Vascylly fouillant sa demeure peu après la tombée de la nuit. Le majordome de la famille Typhos découvre le corps sans vie de son maître le lendemain.',
category: 'criminalité',
secondaryCategories: ['joueurs'],
wiki: 'https://alexcreates.fr/leim/index.php/Vascylly'
},
{
title: 'Scandale Rodhus',
startDate: { day: 25, month: 9, year: 3208 },
description:
"Tivian Rodhus, un professeur estimé de l'Académie Centrale Kaldélienne, est emprisonné pour corruption et aggression sexuelle. Le corps enseignant y est remanié sur ordre de Lazarus Tymos, comte de Nacride.",
category: 'criminalité',
secondaryCategories: ['scandale'],
wiki: 'https://alexcreates.fr/leim/index.php/Tivian_Rodhus'
},
// "Les Milles Cages"
{
title: "Arrivée d'aventuriers à Borélis",
startDate: { day: 12, month: 7, year: 3209 },
description:
'Tara Belyus, Vascylly et Adol Sulvan livrent 3 condamnés à Handany. Ils partent pour la mer durant la journée.',
category: 'joueurs'
},
{
title: "Naufrage de l'Éclipse",
description:
"L'Éclipse, le navire de la garde contenant des condamnés à destination des Cages Handaniennes, s'échoue au large des côtes montagneuses de la Lance d'Aldys.",
startDate: { day: 14, month: 7, year: 3209 },
category: 'catastrophe'
},
{
title: 'Emprisonnement de Tivian Rodhus',
description: "Celui qu'on surnomme la Bête d'Ambrose arrive à Handany, où il purgera sa peine.",
startDate: { day: 14, month: 7, year: 3209 },
category: 'législation'
},
{
title: 'Sulvan et Anastael atteignent Bamast',
startDate: { day: 19, month: 2, year: 3210 },
category: 'joueurs'
},
{
title: 'Jugement de Bormis Griloup',
description:
"Bromis Griloup est jugé coupable d'escroquerie et sabotage aux Cours d'Acier de Tourgrise. Il purgera une peine de 10 ans au sein des prisons royales.",
startDate: { day: 4, month: 8, year: 3209 },
category: 'législation'
},
// "Les Cloches de Cantane"
{
title: 'Inauguration de la Cloche du Pilier',
description: "Le Moine Premier inaugure la grande cloche d'argent au sommet du Pilier d'Ikami.",
startDate: { day: 29, month: 5, year: 3209 },
category: 'religion',
secondaryCategories: ['inauguration']
},
{
title: '1ère disparation à Cantane',
description: "Taleb Vaht décède dans une grotte à la suite d'une attaque d'ischiels enragées.",
startDate: { day: 28, month: 7, year: 3209 },
category: 'mort',
hidden: true
},
{
title: '2ème disparation à Cantane',
description: 'Donovane le mineur kéturien disparait sans laisser de traces.',
startDate: { day: 32, month: 7, year: 3209 },
category: 'mort',
hidden: true
},
{
title: '3ème disparation à Cantane',
description: 'Disparition de Sébastien, gredin sauride.',
startDate: { day: 10, month: 8, year: 3209 },
category: 'mort',
hidden: true
},
{
title: '4ème disparation à Cantane',
description: 'Disparition de Thérence, patrouilleur sauride de la Vieille Garde.',
startDate: { day: 19, month: 8, year: 3209 },
category: 'mort',
hidden: true
},
{
title: '5ème disparation à Cantane',
description: 'Disparition de Mathilda Boulais, vendeuse de pierres.',
startDate: { day: 22, month: 8, year: 3209 },
category: 'mort',
hidden: true
},
{
title: 'Grande Banque Minérale de Cantane',
description:
'Les artisans et mineurs de Rougefer se réunissent à Cantane pour vendre le fruit de leur dur labeur.',
startDate: { day: 23, month: 8, year: 3209 },
endDate: { day: 26, month: 8, year: 3209 },
category: 'commerce'
}
]
})

View File

@@ -1,5 +1,6 @@
import { serverSupabaseClient } from "#supabase/server";
import { z } from 'zod'
import type { CalendarEvent } from "~/models/CalendarEvent";
const querySchema = z.object({
world_id: z.number({ coerce: true }).positive().int()
@@ -17,7 +18,10 @@ export default defineEventHandler(async (event) => {
description,
world_calendars (id, world_id)
`)
.eq('world_calendars.world_id', query.world_id)
return output
if (query.world_id) {
output.eq('world_calendars.world_id', query.world_id)
}
return output.returns<CalendarEvent[]>()
})

View File

@@ -3,25 +3,10 @@ import { defineStore } from 'pinia'
export const useCharacters = defineStore('characters', () => {
const characters = ref<Character[]>([])
const charactersAreLoading = ref<boolean>(false)
const charactersLoaded = ref<boolean>(false)
async function fetchCharacters() {
try {
charactersAreLoading.value = true
const fetched = await useFetch<Character[]>('/api/characters')
if (fetched.data.value) {
charactersLoaded.value = true
characters.value = fetched.data.value
}
} catch (err) {
console.log(err)
} finally {
charactersAreLoading.value = false
}
async function setCharacters(data: Character[]) {
characters.value = data
}
fetchCharacters()
return { characters }
return { characters, setCharacters }
})

View File

@@ -39,7 +39,7 @@ insert into public.character_categories (name) values ('commerçant');
insert into public.worlds (name, description, color) values ('Léïm', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis aliquet congue aliquet. Curabitur eu iaculis diam. Nunc iaculis nibh orci, eu semper nunc congue congue. Praesent euismod tortor eget metus tristique lobortis vel in risus. In volutpat ligula orci, id pharetra lectus egestas at.', 'black');
-- Worlds' calendars
insert into public.calendars (world_id, name, today) values (1, 'Calendrier solaire', '{ "day": 3, "month": 4, "year": -1932 }');
insert into public.calendars (world_id, name, today) values (1, 'Calendrier solaire', '{ "day": 23, "month": 8, "year": 3209 }');
-- Calendar's months
insert into public.calendar_months (calendar_id, name, days, position) values (1, 'Jalen', 32, 1);
@@ -52,8 +52,6 @@ insert into public.calendar_months (calendar_id, name, days, position) values (1
insert into public.calendar_months (calendar_id, name, days, position) values (1, 'Rion', 32, 8);
insert into public.calendar_months (calendar_id, name, days, position) values (1, 'Farene', 32, 9);
insert into public.calendar_months (calendar_id, name, days, position) values (1, 'Dalvene', 32, 10);
insert into public.calendar_months (calendar_id, name, days, position) values (1, 'Testos', 32, 11);
insert into public.calendar_months (calendar_id, name, days, position) values (1, 'Jalen2 le meilleur', 32, 12);
-- Events
insert into public.calendar_events (title, description, start_date, category, hidden, wiki, calendar_id) values (
@@ -119,3 +117,185 @@ insert into public.calendar_events (title, description, start_date, category, hi
'https://alexcreates.fr/leim/index.php/Plaines_de_poussi%C3%A8re',
1
);
insert into public.calendar_events (title, description, start_date, end_date, category, hidden, wiki, calendar_id) values (
'Construction du Rempart de Laurdieu',
'Le Grand Conseil Kaldélien ordonne la construction d''une muraille autour des Plaines de Poussières, afin de contenir les démons y sortant.',
'{ "day": 30, "month": 2, "year": 340 }',
'{ "day": 27, "month": 9, "year": 355 }',
13,
true,
'https://alexcreates.fr/leim/index.php/Plaines_de_poussi%C3%A8re',
1
);
insert into public.calendar_events (title, description, start_date, end_date, category, hidden, wiki, calendar_id) values (
'Inauguration de l''Académie Artistique Arcanique',
'Scäd Sceni ouvre son institut artistique dédié à l''apprentissage des arts arcaniques.',
'{ "day": 11, "month": 6, "year": 2545 }',
null,
5,
false,
'https://alexcreates.fr/leim/index.php/Acad%C3%A9mie_Artistique_Arcanique',
1
);
insert into public.calendar_events (title, description, start_date, end_date, category, hidden, wiki, calendar_id) values (
'Création de la buse kaldélienne',
'Sophia de Rougefer invente la buse kaldélienne, une arme à feu souple à deux canons.',
'{ "day": 4, "month": 2, "year": 3113 }',
null,
7,
false,
'https://alexcreates.fr/leim/index.php/Buse_(arme)',
1
);
insert into public.calendar_events (title, description, start_date, end_date, category, hidden, wiki, calendar_id) values (
'Feux dans les champs de Bamast',
'Plusieurs incendies criminels se propagent à travers les champs de sérille des fermiers des littoraux de Bamast. Aucun suspect ni coupable ne sera trouvé et l''enquête sera baclée.',
'{ "day": 9, "month": 5, "year": 3200 }',
null,
15,
false,
'https://alexcreates.fr/leim/index.php/Vascylly',
1
);
insert into public.calendar_events (title, description, start_date, end_date, category, hidden, wiki, calendar_id) values (
'Meurtre de Darléon Typhos',
'Darléon Typhos surprend Vascylly fouillant sa demeure peu après la tombée de la nuit. Le majordome de la famille Typhos découvre le corps sans vie de son maître le lendemain.',
'{ "day": 21, "month": 6, "year": 3200 }',
null,
15,
false,
'https://alexcreates.fr/leim/index.php/Vascylly',
1
);
insert into public.calendar_events (title, description, start_date, end_date, category, hidden, wiki, calendar_id) values (
'Scandale Rodhus',
'Tivian Rodhus, un professeur estimé de l''Académie Centrale Kaldélienne, est emprisonné pour corruption et aggression sexuelle. Le corps enseignant y est remanié sur ordre de Lazarus Tymos, comte de Nacride.',
'{ "day": 25, "month": 9, "year": 3208 }',
null,
15,
false,
'https://alexcreates.fr/leim/index.php/Tivian_Rodhus',
1
);
insert into public.calendar_events (title, description, start_date, end_date, category, hidden, wiki, calendar_id) values (
'Arrivée d''aventuriers à Borélis',
'Tara Belyus, Vascylly et Adol Sulvan livrent 3 condamnés à Handany. Ils partent pour la mer durant la journée.',
'{ "day": 12, "month": 7, "year": 3209 }',
null,
10,
false,
null,
1
);
insert into public.calendar_events (title, description, start_date, end_date, category, hidden, wiki, calendar_id) values (
'Naufrage de l''Éclipse',
'L''Éclipse, le navire de la garde contenant des condamnés à destination des Cages Handaniennes, s''échoue au large des côtes montagneuses de la Lance d''Aldys.',
'{ "day": 14, "month": 7, "year": 3209 }',
null,
3,
false,
null,
1
);
insert into public.calendar_events (title, description, start_date, end_date, category, hidden, wiki, calendar_id) values (
'Emprisonnement de Tivian Rodhus',
'Celui qu''on surnomme la Bête d''Ambrose arrive à Handany, où il purgera sa peine.',
'{ "day": 14, "month": 7, "year": 3209 }',
null,
18,
false,
'https://alexcreates.fr/leim/index.php/Tivian_Rodhus',
1
);
insert into public.calendar_events (title, description, start_date, end_date, category, hidden, wiki, calendar_id) values (
'Sulvan et Anastael atteignent Bamast',
null,
'{ "day": 19, "month": 2, "year": 3210 }',
null,
10,
false,
null,
1
);
insert into public.calendar_events (title, description, start_date, end_date, category, hidden, wiki, calendar_id) values (
'Jugement de Bormis Griloup',
'Bormis Griloup est jugé coupable d''escroquerie et sabotage aux Cours d''Acier de Tourgrise. Il purgera une peine de 10 ans au sein des prisons royales.',
'{ "day": 4, "month": 8, "year": 3209 }',
null,
18,
false,
null,
1
);
insert into public.calendar_events (title, description, start_date, end_date, category, hidden, wiki, calendar_id) values (
'Inauguration de la Cloche du Pilier',
'Le Moine Premier inaugure la grande cloche d''argent au sommet du Pilier d''Ikami.',
'{ "day": 29, "month": 5, "year": 3209 }',
null,
6,
false,
null,
1
);
insert into public.calendar_events (title, description, start_date, end_date, category, hidden, wiki, calendar_id) values (
'1ère disparation à Cantane',
'Taleb Vaht décède dans une grotte à la suite d''une attaque d''ischiels enragées.',
'{ "day": 28, "month": 7, "year": 3209 }',
null,
2,
true,
null,
1
);
insert into public.calendar_events (title, description, start_date, end_date, category, hidden, wiki, calendar_id) values (
'2ème disparation à Cantane',
'Donovane le mineur kéturien disparait sans laisser de traces.',
'{ "day": 32, "month": 7, "year": 3209 }',
null,
2,
true,
null,
1
);
insert into public.calendar_events (title, description, start_date, end_date, category, hidden, wiki, calendar_id) values (
'3ème disparation à Cantane',
'Disparition de Sébastien, gredin sauride.',
'{ "day": 10, "month": 8, "year": 3209 }',
null,
2,
true,
null,
1
);
insert into public.calendar_events (title, description, start_date, end_date, category, hidden, wiki, calendar_id) values (
'4ème disparation à Cantane',
'Disparition de Thérence, patrouilleur sauride de la Vieille Garde.',
'{ "day": 19, "month": 8, "year": 3209 }',
null,
2,
true,
null,
1
);
insert into public.calendar_events (title, description, start_date, end_date, category, hidden, wiki, calendar_id) values (
'5ème disparation à Cantane',
'Disparition de Mathilda Boulais, vendeuse de pierres.',
'{ "day": 22, "month": 8, "year": 3209 }',
null,
2,
true,
null,
1
);
insert into public.calendar_events (title, description, start_date, end_date, category, hidden, wiki, calendar_id) values (
'Grande Banque Minérale de Cantane',
'Les artisans et mineurs de Rougefer se réunissent à Cantane pour vendre le fruit de leur dur labeur.',
'{ "day": 23, "month": 8, "year": 3209 }',
'{ "day": 26, "month": 8, "year": 3209 }',
17,
false,
null,
1
);