|
| 1 | +Class GraphQL.Scope.Package Extends Abstract |
| 2 | +{ |
| 3 | + |
| 4 | +Parameter Package = {"DeepSee"}; |
| 5 | + |
| 6 | +/// This method should return a list of classes, available for GraphQL |
| 7 | +ClassMethod GetClasses() As %List |
| 8 | +{ |
| 9 | + set list = "" |
| 10 | + set rs = ..SubclassesListFunc() |
| 11 | + while rs.%Next() |
| 12 | + { |
| 13 | + set classname = rs.Name |
| 14 | + continue:$e(classname)="%" |
| 15 | + continue:$$$defClassKeyGet(classname,$$$cCLASSgeneratedby)'="" |
| 16 | + continue:$$$defClassKeyGet(classname, $$$cCLASSsystem)'=0 // Skip system classes |
| 17 | + continue:'$$$comClassDefined(classname) // TODO fix for mapped classes |
| 18 | + set list = list _ $lb(classname) |
| 19 | + } |
| 20 | + quit list |
| 21 | +} |
| 22 | + |
| 23 | +/// This method should return a list of class fields, available for GraphQL |
| 24 | +ClassMethod GetProperties(classname As %Dictionary.CacheClassname) As %List |
| 25 | +{ |
| 26 | + if ($$$classIsPersistent(classname)) |
| 27 | + { |
| 28 | + set list = "" |
| 29 | + set class = ##class(%Dictionary.CompiledClass).%OpenId(classname) |
| 30 | + for i=1:1:class.Properties.Count() |
| 31 | + { |
| 32 | + set property = class.Properties.GetAt(i) |
| 33 | + set type = property.Type |
| 34 | + if property.Internal || property.Calculated || property.ReadOnly || property.Private || property.Identity continue |
| 35 | + continue:'($$$classIsPersistent(type) || $$$classIsSerial(type) || $$$classIsStream(type) || $$$classIsDataType(type)) |
| 36 | + continue:type="%Library.RegisteredObject" |
| 37 | + set list = list _ $lb(property.Name) |
| 38 | + } |
| 39 | + }else{ |
| 40 | + quit $$$ERROR($$$GeneralError,"Class: "_classname_" must by %Persystent") |
| 41 | + } |
| 42 | + quit list |
| 43 | +} |
| 44 | + |
| 45 | +Query SubclassesList(Package = {..#Package}) As %SQLQuery |
| 46 | +{ |
| 47 | +SELECT DISTINCT name |
| 48 | +FROM %Dictionary.ClassDefinitionQuery_SubclassOf('%Library.Persistent') |
| 49 | +where $piece(name,'.',1)= :Package |
| 50 | +} |
| 51 | + |
| 52 | +} |
| 53 | + |
0 commit comments