File tree Expand file tree Collapse file tree 2 files changed +37
-0
lines changed Expand file tree Collapse file tree 2 files changed +37
-0
lines changed Original file line number Diff line number Diff line change @@ -117,6 +117,15 @@ public function hasIndex($indexOrColumns = null)
117
117
return false ;
118
118
}
119
119
120
+ public function jsonSchema (array $ schema = []): void
121
+ {
122
+ $ this ->connection ->getDatabase ()->modifyCollection ($ this ->collection ->getCollectionName (), [
123
+ 'validator ' => [
124
+ '$jsonSchema ' => $ schema ,
125
+ ],
126
+ ]);
127
+ }
128
+
120
129
/**
121
130
* @param string|array $indexOrColumns
122
131
*
Original file line number Diff line number Diff line change @@ -63,6 +63,34 @@ public function testCreateWithOptions(): void
63
63
$ this ->assertEquals (1024 , $ collection ['options ' ]['size ' ]);
64
64
}
65
65
66
+ public function testCreateWithSchemaValidator (): void
67
+ {
68
+ $ schema = [
69
+ 'bsonType ' => 'object ' ,
70
+ 'required ' => [ 'username ' ],
71
+ 'properties ' => [
72
+ 'username ' => [
73
+ 'bsonType ' => 'string ' ,
74
+ 'description ' => 'must be a string and is required ' ,
75
+ ],
76
+ ],
77
+ ];
78
+
79
+ Schema::create (self ::COLL_2 , function (Blueprint $ collection ) use ($ schema ) {
80
+ $ collection ->string ('username ' );
81
+ $ collection ->jsonSchema ($ schema );
82
+ });
83
+
84
+ $ this ->assertTrue (Schema::hasCollection (self ::COLL_2 ));
85
+ $ this ->assertTrue (Schema::hasTable (self ::COLL_2 ));
86
+
87
+ $ collection = Schema::getCollection (self ::COLL_2 );
88
+ $ this ->assertEquals (
89
+ ['$jsonSchema ' => $ schema ],
90
+ $ collection ['options ' ]['validator ' ],
91
+ );
92
+ }
93
+
66
94
public function testDrop (): void
67
95
{
68
96
Schema::create (self ::COLL_1 );
You can’t perform that action at this time.
0 commit comments