export function useBoardPosts() {
  const posts = useState('board.posts', () => [])
  const loading = useState('board.loading', () => false)

  async function fetchPosts(params = {}) {
    loading.value = true
    try {
      const result = await $fetch('/api/board/posts', { params })
      posts.value = result?.posts || []
      return posts.value
    } finally {
      loading.value = false
    }
  }

  async function createPost(body) {
    const created = await $fetch('/api/board/posts', {
      method: 'POST',
      body,
    })
    await fetchPosts()
    return created
  }

  async function updatePost(id, body) {
    const updated = await $fetch(`/api/board/posts/${id}`, {
      method: 'PATCH',
      body,
    })
    await fetchPosts()
    return updated
  }

  async function deletePost(id) {
    const result = await $fetch(`/api/board/posts/${id}`, {
      method: 'DELETE',
    })
    await fetchPosts()
    return result
  }

  return {
    posts: readonly(posts),
    loading: readonly(loading),
    fetchPosts,
    createPost,
    updatePost,
    deletePost,
  }
}
