@follow-app/client-sdk
Version:
TypeScript client SDK for Follow RSS Server API
99 lines (81 loc) • 2.08 kB
text/typescript
// Import types from drizzle schema
import type { feeds } from "@folo-services/drizzle"
import type { InferInsertModel, InferSelectModel } from "drizzle-orm"
import type { FeedIdRequest, SerializedInsertModel, SerializedModel } from "../../types"
// Re-export database types with proper date serialization
export type FeedModel = SerializedModel<InferSelectModel<typeof feeds>>
export type FeedInsert = SerializedInsertModel<InferInsertModel<typeof feeds>>
// Feed-related API request/response types
export interface FeedGetQuery {
id?: string
url?: string
entriesLimit?: number
}
export interface FeedGetResponse {
feed: FeedModel
entries?: any[]
subscription?: any
readCount?: number
subscriptionCount?: number
}
export interface FeedRefreshRequest {
url: string
force?: boolean
}
export interface FeedRefreshResponse {
success: boolean
message?: string
}
export interface FeedAnalyticsQuery extends FeedIdRequest {
timeRange?: "7d" | "30d" | "90d"
}
export interface FeedAnalyticsResponse {
views: number
subscribers: number
engagement: number
growth: number
}
export interface FeedResetRequest extends FeedIdRequest {
reason?: string
}
export interface FeedResetResponse {
success: boolean
message?: string
}
// Feed claim types
export interface FeedClaimChallengeRequest extends FeedIdRequest {
challenge: string
}
export interface FeedClaimChallengeResponse {
success: boolean
message?: string
}
export interface FeedClaimListQuery {
page?: number
limit?: number
status?: "pending" | "approved" | "rejected"
}
export interface FeedClaimItem {
id: string
feedId: string
userId: string
status: "pending" | "approved" | "rejected"
createdAt: string
updatedAt: string
}
export interface FeedClaimListResponse {
claims: FeedClaimItem[]
pagination: {
page: number
limit: number
total: number
hasMore: boolean
}
}
export interface FeedClaimMessageRequest extends FeedIdRequest {
message: string
}
export interface FeedClaimMessageResponse {
success: boolean
message?: string
}