UNPKG

@ideal-photography/shared

Version:

Shared GraphQL and Mongoose logic for Ideal Photography PWAs - Complete photography business models with authentication, bookings, galleries, reviews, and admin management. Fixed ES module imports and GraphQL schema issues.

122 lines (106 loc) 2.5 kB
import { gql } from 'graphql-tag'; const serviceTypeDefs = gql` type Service { _id: ID! name: String! description: String! category: String! basePrice: Float! priceStructure: PriceStructure! duration: DurationRange! includes: [String!] addOns: [AddOn!] equipment: [String!] deliverables: Deliverables! isActive: Boolean! featured: Boolean! images: [String!] tags: [String!] createdAt: String updatedAt: String } type PriceStructure { type: String! additionalHourRate: Float packageDetails: String } type DurationRange { min: Int! max: Int! } type AddOn { name: String! description: String price: Float! } type Deliverables { photos: PhotoDeliverables! editedPhotos: Int! deliveryTime: String! format: [String!]! } type PhotoDeliverables { digital: Int! prints: Int! } input ServiceInput { name: String! description: String! category: String! basePrice: Float! priceStructure: PriceStructureInput! duration: DurationRangeInput! includes: [String!] addOns: [AddOnInput!] equipment: [String!] deliverables: DeliverablesInput! featured: Boolean images: [String!] tags: [String!] } input PriceStructureInput { type: String! additionalHourRate: Float packageDetails: String } input DurationRangeInput { min: Int! max: Int! } input AddOnInput { name: String! description: String price: Float! } input DeliverablesInput { photos: PhotoDeliverablesInput! editedPhotos: Int! deliveryTime: String! format: [String!]! } input PhotoDeliverablesInput { digital: Int! prints: Int! } input ServiceFilter { category: String isActive: Boolean featured: Boolean minPrice: Float maxPrice: Float } type Query { services(filter: ServiceFilter): [Service!]! service(id: ID!): Service featuredServices: [Service!]! servicesByCategory(category: String!): [Service!]! } type Mutation { createService(input: ServiceInput!): Service! updateService(id: ID!, input: ServiceInput!): Service! deleteService(id: ID!): Service! toggleServiceStatus(id: ID!): Service! toggleServiceFeatured(id: ID!): Service! } `; export default serviceTypeDefs;