AfricTivistes / CartoCivicElections

Open-source Astro website template with sleek, customizable TailwindCSS components.
https://initiative4elections.tech
MIT License
0 stars 1 forks source link

Préparation de l'API de données nocodb #6

Open dofbi opened 2 weeks ago

dofbi commented 2 weeks ago

Salaam @mbayedione10 Voici une proposition pour l’intégration de l'api

// src/lib/api/nocodb.ts

import axios from 'axios';

const API_URL = 'YOUR_NOCODB_API_URL';
const API_KEY = 'YOUR_NOCODB_API_KEY';

export const api = axios.create({
  baseURL: API_URL,
  headers: {
    'xc-auth': API_KEY,
    'Content-Type': 'application/json',
  },
});

// src/lib/contentNocodb.ts

import { api } from './api/nocodb.ts';

export async function getData(tableName: string, query: object = {}) {
  try {
    const response = await api.get(`/api/v1/table/${tableName}/list`, { params: query });
    return response.data;
  } catch (error) {
    console.error('Error fetching data:', error);
    throw error;
  }
}

export async function insertData(tableName: string, data: object) {
  try {
    const response = await api.post(`/api/v1/table/${tableName}/insert`, data);
    return response.data;
  } catch (error) {
    console.error('Error inserting data:', error);
    throw error;
  }
}

export async function deleteData(tableName: string, rowId: string) {
  try {
    const response = await api.delete(`/api/v1/table/${tableName}/${rowId}`);
    return response.data;
  } catch (error) {
    console.error('Error deleting data:', error);
    throw error;
  }
}

// src/pages/example.astro

---
import { getData, insertData, deleteData } from '../lib/contentNocodb.ts';

// Example: Fetch data
const tableData = await getData('your_table_name');

// Example: Insert data
const newRow = { name: 'John Doe', email: 'john@example.com' };
await insertData('your_table_name', newRow);

// Example: Delete data
await deleteData('your_table_name', 'row_id_to_delete');
---

<html>
  <head>
    <title>NocoDB Example</title>
  </head>
  <body>
    <h1>NocoDB Data</h1>
    <ul>
      {tableData.map((item) => (
        <li>{JSON.stringify(item)}</li>
      ))}
    </ul>
  </body>
</html>
dofbi commented 5 days ago

Tu peux garder les clés dans le fichier .env