mirror of
https://github.com/encounter/JSONAPI.git
synced 2026-03-30 11:18:38 -07:00
68 lines
1.8 KiB
Swift
68 lines
1.8 KiB
Swift
//
|
|
// JSONAPIOpenAPITypes.swift
|
|
// JSONAPIOpenAPI
|
|
//
|
|
// Created by Mathew Polzin on 1/13/19.
|
|
//
|
|
|
|
import JSONAPI
|
|
|
|
extension Attribute: OpenAPINodeType where RawValue: OpenAPINodeType {
|
|
static public var openAPINode: OpenAPI.JSONNode {
|
|
return RawValue.openAPINode
|
|
}
|
|
}
|
|
|
|
extension TransformedAttribute: OpenAPINodeType where RawValue: OpenAPINodeType {
|
|
static public var openAPINode: OpenAPI.JSONNode {
|
|
return RawValue.openAPINode
|
|
}
|
|
}
|
|
|
|
private protocol _Optional {}
|
|
extension Optional: _Optional {}
|
|
|
|
extension ToOneRelationship: OpenAPINodeType {
|
|
// TODO: const for json `type`
|
|
static public var openAPINode: OpenAPI.JSONNode {
|
|
let nullable = Identifiable.self is _Optional.Type
|
|
return .object(.init(format: .generic,
|
|
required: true),
|
|
.init(properties: [
|
|
"data": .object(.init(format: .generic,
|
|
required: true,
|
|
nullable: nullable),
|
|
.init(properties: [
|
|
"id": .string(.init(format: .generic,
|
|
required: true),
|
|
.init()),
|
|
"type": .string(.init(format: .generic,
|
|
required: true),
|
|
.init())
|
|
]))
|
|
]))
|
|
}
|
|
}
|
|
|
|
extension ToManyRelationship: OpenAPINodeType {
|
|
// TODO: const for json `type`
|
|
static public var openAPINode: OpenAPI.JSONNode {
|
|
return .object(.init(format: .generic,
|
|
required: true),
|
|
.init(properties: [
|
|
"data": .array(.init(format: .generic,
|
|
required: true),
|
|
.init(items: .object(.init(format: .generic,
|
|
required: true),
|
|
.init(properties: [
|
|
"id": .string(.init(format: .generic,
|
|
required: true),
|
|
.init()),
|
|
"type": .string(.init(format: .generic,
|
|
required: true),
|
|
.init())
|
|
]))))
|
|
]))
|
|
}
|
|
}
|