iamphoto-ms-api
v1.2.0
Published
Iamphoto client facing API
Readme
iamphoto-ms-api
This library is part of the iamphoto-microservices project and provides shared functionality for the API layer of the microservices.
Features
- Common utilities for API development.
- Shared configurations and middleware.
- Reusable API helpers.
Installation
npm install iamphoto-ms-apiUsage
NextJs
// hooks/usePortfolio.ts
import {useEffect, useState} from "react"
import {
PortfoliosApi,
PortfoliosService,
type GetPortfolioResponseDto,
} from "iamphoto-ms-api"
export function usePortfolio(portfolioId?: string) {
const [portfolio, setPortfolio] = useState<GetPortfolioResponseDto | null>(
null
)
const [loading, setLoading] = useState(false)
const [error, setError] = useState<string | null>(null)
useEffect(() => {
if (!portfolioId) return
const fetchPortfolio = async () => {
setLoading(true)
try {
const api = new PortfoliosApi(
new PortfoliosService(/* Your axios config */)
)
const data = await api.portfolios.portfoliosList({portfolioId})
setPortfolio(data)
} catch (err) {
console.error(err)
setError("Failed to fetch portfolio")
} finally {
setLoading(false)
}
}
fetchPortfolio()
}, [portfolioId])
return {portfolio, loading, error}
}Vue
// src/store/portfolio.js
import {defineStore} from "pinia"
import {PortfoliosApi, PortfoliosService} from "iamphoto-ms-api"
const api = new PortfoliosApi(new PortfoliosService(/* Your axios config */))
export const useUserStore = defineStore("user", {
state: () => ({
portfolioId: localStorage.getItem(STORAGE_KEYS.portfolioId) ?? undefined,
}),
actions: {
async fetchPortfolio() {
const data = await api.portfolios.portfoliosList({
portfolioId: this.portfolioId,
})
this.setPortfolio(data)
},
},
})``
License
This project is licensed under the iamphoto license.
