Skip to content

Commit 28884fc

Browse files
authored
Merge pull request #391 from mi12-root/fix-numerics-in-json-schema
Add Double/Int overloads for JSON schema numeric constraints
2 parents c8b02fc + 444fb5d commit 28884fc

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed

Sources/OpenAI/Public/JSONSchema/JSONDocument.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public protocol JSONDocument: Codable, Hashable, Sendable {
1717
/// A JSON "null" value
1818
struct JSONNullValue: JSONDocument {}
1919
extension Int: JSONDocument {}
20+
extension Double: JSONDocument {}
2021
extension String: JSONDocument {}
2122
extension Bool: JSONDocument {}
2223
/// [number](https://json-schema.org/draft/2020-12/json-schema-core#section-4.2.1-3.10)

Sources/OpenAI/Public/JSONSchema/JSONSchemaField.swift

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,15 @@ public struct JSONSchemaField {
361361
/// ### Summary
362362
/// A numeric instance is valid only if division by this keyword’s value results in an integer.
363363
public static func multipleOf(_ value: Decimal) -> JSONSchemaField {
364-
.init(keyword: "maximum", value: .init(value))
364+
.init(keyword: "multipleOf", value: .init(value))
365+
}
366+
367+
public static func multipleOf(_ value: Double) -> JSONSchemaField {
368+
.init(keyword: "multipleOf", value: .init(value))
369+
}
370+
371+
public static func multipleOf(_ value: Int) -> JSONSchemaField {
372+
.init(keyword: "multipleOf", value: .init(value))
365373
}
366374

367375
/// ### Kind
@@ -375,6 +383,14 @@ public struct JSONSchemaField {
375383
public static func maximum(_ value: Decimal) -> JSONSchemaField {
376384
.init(keyword: "maximum", value: .init(value))
377385
}
386+
387+
public static func maximum(_ value: Double) -> JSONSchemaField {
388+
.init(keyword: "maximum", value: .init(value))
389+
}
390+
391+
public static func maximum(_ value: Int) -> JSONSchemaField {
392+
.init(keyword: "maximum", value: .init(value))
393+
}
378394

379395
/// ### Kind
380396
/// Assertion
@@ -387,6 +403,14 @@ public struct JSONSchemaField {
387403
public static func exclusiveMaximum(_ value: Decimal) -> JSONSchemaField {
388404
.init(keyword: "exclusiveMaximum", value: .init(value))
389405
}
406+
407+
public static func exclusiveMaximum(_ value: Double) -> JSONSchemaField {
408+
.init(keyword: "exclusiveMaximum", value: .init(value))
409+
}
410+
411+
public static func exclusiveMaximum(_ value: Int) -> JSONSchemaField {
412+
.init(keyword: "exclusiveMaximum", value: .init(value))
413+
}
390414

391415
/// ### Kind
392416
/// Assertion
@@ -399,6 +423,14 @@ public struct JSONSchemaField {
399423
public static func minimum(_ value: Decimal) -> JSONSchemaField {
400424
.init(keyword: "minimum", value: .init(value))
401425
}
426+
427+
public static func minimum(_ value: Double) -> JSONSchemaField {
428+
.init(keyword: "minimum", value: .init(value))
429+
}
430+
431+
public static func minimum(_ value: Int) -> JSONSchemaField {
432+
.init(keyword: "minimum", value: .init(value))
433+
}
402434

403435
/// ### Kind
404436
/// Assertion
@@ -411,6 +443,14 @@ public struct JSONSchemaField {
411443
public static func exclusiveMinimum(_ value: Decimal) -> JSONSchemaField {
412444
.init(keyword: "exclusiveMinimum", value: .init(value))
413445
}
446+
447+
public static func exclusiveMinimum(_ value: Double) -> JSONSchemaField {
448+
.init(keyword: "exclusiveMinimum", value: .init(value))
449+
}
450+
451+
public static func exclusiveMinimum(_ value: Int) -> JSONSchemaField {
452+
.init(keyword: "exclusiveMinimum", value: .init(value))
453+
}
414454

415455
// MARK: Validation Keywords for Strings
416456
// https://json-schema.org/draft/2020-12/json-schema-validation#name-validation-keywords-for-str

0 commit comments

Comments
 (0)