Skip to content

Commit 1d37d4a

Browse files
committed
changed minimal supported PHP version to 5.6, upgrade tableschema, support csv dialect
1 parent 3113be9 commit 1d37d4a

10 files changed

Lines changed: 1018 additions & 11 deletions

File tree

.travis.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
language: php
22
php:
3-
- '5.4'
4-
- '5.5'
53
- '5.6'
64
- '7.0'
75
- '7.1'

CONTRIBUTING.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,4 +81,5 @@ Add the following to `composer.json`
8181
]
8282
```
8383

84-
Run `composer update`
84+
Run `composer require "frictionlessdata/tableschema @dev"`
85+

composer.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
"description": "A utility library for working with Data Packages",
44
"license": "MIT",
55
"require": {
6-
"php": ">=5.4",
6+
"php": ">=5.6",
77
"justinrainbow/json-schema": "^5.2",
8-
"frictionlessdata/tableschema": "^0.1.7",
8+
"frictionlessdata/tableschema": "^0.1.9",
99
"alchemy/zippy": "=0.3.5"
1010
},
1111
"require-dev": {
@@ -19,7 +19,7 @@
1919
}
2020
},
2121
"scripts": {
22-
"test": "phpunit --debug --coverage-clover coverage-clover.xml --bootstrap tests/autoload.php tests/",
22+
"test": "phpunit --coverage-clover coverage-clover.xml --bootstrap tests/autoload.php tests/",
2323
"update_registry": "php update_registry.php",
2424
"style-check": "./.install_cs_fixer.sh && ./php-cs-fixer fix --dry-run --verbose --diff",
2525
"style-fix": "./.install_cs_fixer.sh && ./php-cs-fixer fix --verbose"

src/DataStreams/TabularDataStream.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,15 @@ class TabularDataStream extends BaseDataStream
1818
public function __construct($dataSource, $dataSourceOptions = null)
1919
{
2020
parent::__construct($dataSource, $dataSourceOptions);
21-
$schema = $this->dataSourceOptions;
21+
$this->dataSourceOptions = (object) $this->dataSourceOptions;
22+
$schema = $this->dataSourceOptions->schema;
23+
$dialect = $this->dataSourceOptions->dialect;
2224
if (empty($schema)) {
2325
throw new \Exception('schema is required for tabular data stream');
2426
} else {
2527
try {
2628
$this->schema = new Schema($schema);
27-
$this->table = new Table($this->getDataSourceObject(), $this->schema);
29+
$this->table = new Table($this->getDataSourceObject(), $this->schema, $dialect);
2830
} catch (\Exception $e) {
2931
throw new DataStreamOpenException('Failed to open tabular data source '.json_encode($dataSource).': '.json_encode($e->getMessage()));
3032
}

src/Resources/TabularResource.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,20 @@ public function getFileExtension()
2525
*/
2626
protected function getDataStream($dataSource, $dataSourceOptions = null)
2727
{
28-
return new TabularDataStream($this->normalizeDataSource($dataSource, $this->basePath), $this->schema());
28+
$dataSourceOptions = array_merge([
29+
'schema' => $this->schema(),
30+
'dialect' => isset($this->descriptor()->dialect) ? $this->descriptor()->dialect : null,
31+
], (array) $dataSourceOptions);
32+
33+
return new TabularDataStream($this->normalizeDataSource($dataSource, $this->basePath), $dataSourceOptions);
2934
}
3035

3136
protected function getInlineDataStream($data)
3237
{
33-
return new TabularInlineDataStream($data, $this->schema());
38+
return new TabularInlineDataStream($data, [
39+
'schema' => $this->schema(),
40+
'dialect' => isset($this->descriptor()->dialect) ? $this->descriptor()->dialect : null,
41+
]);
3442
}
3543

3644
protected static function handlesProfile($profile)

tests/DatapackageTest.php

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use frictionlessdata\tableschema\InferSchema;
1414
use frictionlessdata\tableschema\Table;
1515
use frictionlessdata\tableschema\DataSources\CsvDataSource;
16+
use Carbon\Carbon;
1617

1718
class DatapackageTest extends TestCase
1819
{
@@ -544,7 +545,7 @@ public function testDataHubCountryList()
544545
// now, let's try to load it but get it as tabular data
545546
$descriptor = json_decode(file_get_contents(dirname(__FILE__).'/fixtures/datahub-country-list/datapackage.json'));
546547
foreach ($descriptor->resources as $resource) {
547-
if ($resource->name != 'datapackage_zip') {
548+
if (!in_array($resource->name, ['datapackage_zip', 'data_json'])) {
548549
$resource->profile = 'tabular-data-resource';
549550
}
550551
}
@@ -558,6 +559,64 @@ public function testDataHubCountryList()
558559
}
559560
}
560561

562+
public function testCommitteesPackage()
563+
{
564+
$package = Package::load(dirname(__FILE__).'/fixtures/committees/datapackage.json');
565+
$resourceNum = 0;
566+
foreach ($package as $resource) {
567+
$this->assertEquals(0, $resourceNum);
568+
$rowNum = 0;
569+
foreach ($resource as $row) {
570+
++$rowNum;
571+
}
572+
$this->assertEquals(706, $rowNum);
573+
++$resourceNum;
574+
}
575+
}
576+
577+
public function testCsvDialect()
578+
{
579+
$package = Package::load(dirname(__FILE__).'/fixtures/committees/datapackage-lolsv.json');
580+
$resourceNum = 0;
581+
foreach ($package as $resource) {
582+
$this->assertEquals(0, $resourceNum);
583+
$rowNum = 0;
584+
foreach ($resource as $row) {
585+
if ($rowNum == 0) {
586+
$this->assertEquals(array(
587+
'CommitteeID' => 97,
588+
'Name' => '"ה""ח המדיניות הכלכלית לשנת הכספים 2004"',
589+
'CategoryID' => null,
590+
'CategoryDesc' => null,
591+
'KnessetNum' => 16,
592+
'CommitteeTypeID' => 73,
593+
'CommitteeTypeDesc' => 'ועדה משותפת',
594+
'Email' => null,
595+
'StartDate' => Carbon::__set_state(array(
596+
'date' => '2004-08-12 00:00:00.000000',
597+
'timezone_type' => 3,
598+
'timezone' => 'UTC',
599+
)),
600+
'FinishDate' => null,
601+
'AdditionalTypeID' => null,
602+
'AdditionalTypeDesc' => null,
603+
'ParentCommitteeID' => null,
604+
'CommitteeParentName' => null,
605+
'IsCurrent' => true,
606+
'LastUpdatedDate' => Carbon::__set_state(array(
607+
'date' => '2015-03-20 12:02:57.000000',
608+
'timezone_type' => 3,
609+
'timezone' => 'UTC',
610+
)),
611+
), $row);
612+
}
613+
++$rowNum;
614+
}
615+
$this->assertEquals(2, $rowNum);
616+
++$resourceNum;
617+
}
618+
}
619+
561620
protected function assertDatapackageValidation($expectedMessages, $source, $basePath = null)
562621
{
563622
$validationErrors = Package::validate($source, $basePath);
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
{
2+
"bytes": 216380647,
3+
"count_of_rows": 2941876,
4+
"description": "Knesset committees and committee meetings data from Knesset dataservice API",
5+
"hash": "5e3087c6129d7b7da03f0e7ec93d1c48",
6+
"name": "knesset_data_committees",
7+
"resources": [
8+
{
9+
"profile": "tabular-data-resource",
10+
"bytes": 160722,
11+
"count_of_rows": 702,
12+
"dialect": {
13+
"delimiter": "o",
14+
"quoteChar": "L",
15+
"doubleQuote": true
16+
},
17+
"dpp:streaming": true,
18+
"encoding": "utf-8",
19+
"format": "csv",
20+
"hash": "23974f6e86b9996d4930753f073a67f1",
21+
"name": "kns_committee",
22+
"path": "kns_committee.lolsv",
23+
"schema": {
24+
"fields": [
25+
{
26+
"description": "\u05e7\u05d5\u05d3 \u05d4\u05d5\u05d5\u05e2\u05d3\u05d4",
27+
"name": "CommitteeID",
28+
"type": "integer"
29+
},
30+
{
31+
"description": "\u05e9\u05dd \u05d4\u05d5\u05d5\u05e2\u05d3\u05d4",
32+
"name": "Name",
33+
"type": "string"
34+
},
35+
{
36+
"description": "\u05e7\u05d5\u05d3 \u05d4\u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d4 \u05e9\u05dc \u05d4\u05d5\u05d5\u05e2\u05d3\u05d4",
37+
"name": "CategoryID",
38+
"type": "integer"
39+
},
40+
{
41+
"description": "\u05ea\u05d9\u05d0\u05d5\u05e8 \u05d4\u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d4 \u05e9\u05dc \u05d4\u05d5\u05d5\u05e2\u05d3\u05d4 \u05d1\u05db\u05dc \u05db\u05e0\u05e1\u05ea, \u05db\u05dc \u05d4\u05d5\u05d5\u05e2\u05d3\u05d5\u05ea \u05de\u05d5\u05e7\u05de\u05d5\u05ea \u05de\u05d7\u05d3\u05e9. \u05d4\u05e9\u05d3\u05d4 \u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d4 \u05db\u05d5\u05dc\u05dc \u05d0\u05ea \u05e8\u05e9\u05d9\u05de\u05ea \u05d4\u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d5\u05ea \u05d4\u05e0\u05d5\u05e9\u05d0\u05d9\u05d5\u05ea \u05e9\u05d0\u05dc\u05d9\u05d4\u05df \u05de\u05e9\u05d5\u05d9\u05db\u05d5\u05ea \u05d4\u05d5\u05d5\u05e2\u05d3\u05d5\u05ea. \u05dc\u05de\u05e9\u05dc \u05d4\u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d4 \u05e9\u05dc \u05d5\u05e2\u05d3\u05ea \u05d4\u05e4\u05e0\u05d9\u05dd \u05d5\u05d4\u05d2\u05e0\u05ea \u05d4\u05e1\u05d1\u05d9\u05d1\u05d4 \u05d4\u05d9\u05d0 \"\u05e4\u05e0\u05d9\u05dd\" \u05d5\u05db\u05da \u05d4\u05d9\u05d4 \u05d2\u05dd \u05db\u05d0\u05e9\u05e8 \u05e9\u05dd \u05d4\u05d5\u05d5\u05e2\u05d3\u05d4 \u05d4\u05d9\u05d4 \u05d5\u05e2\u05d3\u05ea \u05d4\u05e4\u05e0\u05d9\u05dd \u05d5\u05d0\u05d9\u05db\u05d5\u05ea \u05d4\u05e1\u05d1\u05d9\u05d1\u05d4. \u05d2\u05dd \u05d5\u05e2\u05d3\u05d5\u05ea \u05d4\u05de\u05e9\u05e0\u05d4 \u05e9\u05dc \u05db\u05dc \u05d5\u05e2\u05d3\u05d4 \u05de\u05e9\u05d5\u05d9\u05db\u05d5\u05ea \u05dc\u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d4 \u05e9\u05dc\u05d4. \u05de\u05d3\u05d5\u05d1\u05e8 \u05d1\u05e9\u05d9\u05d5\u05da \u05e0\u05d5\u05e9\u05d0\u05d9 \u05e9\u05dc \u05d4\u05d5\u05d5\u05e2\u05d3\u05d5\u05ea.\n",
42+
"name": "CategoryDesc",
43+
"type": "string"
44+
},
45+
{
46+
"description": "\u05de\u05e1\u05e4\u05e8 \u05d4\u05db\u05e0\u05e1\u05ea",
47+
"name": "KnessetNum",
48+
"type": "integer"
49+
},
50+
{
51+
"description": "\u05e7\u05d5\u05d3 \u05e1\u05d5\u05d2 \u05d4\u05d5\u05d5\u05e2\u05d3\u05d4",
52+
"name": "CommitteeTypeID",
53+
"type": "integer"
54+
},
55+
{
56+
"description": "\u05ea\u05d9\u05d0\u05d5\u05e8 \u05e1\u05d5\u05d2 \u05d4\u05d5\u05d5\u05e2\u05d3\u05d4 (\u05e8\u05d0\u05e9\u05d9\u05ea, \u05de\u05d9\u05d5\u05d7\u05d3\u05ea, \u05de\u05e9\u05e0\u05d4, \u05de\u05e9\u05d5\u05ea\u05e4\u05ea, \u05d4\u05db\u05e0\u05e1\u05ea)\n",
57+
"name": "CommitteeTypeDesc",
58+
"type": "string"
59+
},
60+
{
61+
"description": "\u05db\u05ea\u05d5\u05d1\u05ea \u05d4\u05d3\u05d5\u05d0\"\u05dc \u05e9\u05dc \u05d4\u05d5\u05d5\u05e2\u05d3\u05d4",
62+
"name": "Email",
63+
"type": "string"
64+
},
65+
{
66+
"description": "\u05ea\u05d0\u05e8\u05d9\u05da \u05d4\u05ea\u05d7\u05dc\u05d4",
67+
"format": "%Y-%m-%d %H:%M:%S",
68+
"name": "StartDate",
69+
"type": "datetime"
70+
},
71+
{
72+
"description": "\u05ea\u05d0\u05e8\u05d9\u05da \u05e1\u05d9\u05d5\u05dd",
73+
"format": "%Y-%m-%d %H:%M:%S",
74+
"name": "FinishDate",
75+
"type": "datetime"
76+
},
77+
{
78+
"description": "\u05e7\u05d5\u05d3 \u05e1\u05d5\u05d2 \u05de\u05e9\u05e0\u05d4 \u05e9\u05dc \u05d4\u05d5\u05d5\u05e2\u05d3\u05d4",
79+
"name": "AdditionalTypeID",
80+
"type": "integer"
81+
},
82+
{
83+
"description": "\u05ea\u05d9\u05d0\u05d5\u05e8 \u05e1\u05d5\u05d2 \u05de\u05e9\u05e0\u05d4 \u05e9\u05dc \u05d4\u05d5\u05d5\u05e2\u05d3\u05d4 (\u05e7\u05d1\u05d5\u05e2\u05d4, \u05de\u05d9\u05d5\u05d7\u05d3\u05ea, \u05d7\u05e7\u05d9\u05e8\u05d4)",
84+
"name": "AdditionalTypeDesc",
85+
"type": "string"
86+
},
87+
{
88+
"description": "\u05e7\u05d5\u05d3 \u05d5\u05e2\u05d3\u05ea \u05d4\u05d0\u05dd (\u05e8\u05dc\u05d5\u05d5\u05e0\u05d8\u05d9 \u05e8\u05e7 \u05dc\u05d5\u05d5\u05e2\u05d3\u05ea \u05de\u05e9\u05e0\u05d4)",
89+
"name": "ParentCommitteeID",
90+
"type": "integer"
91+
},
92+
{
93+
"description": "\u05ea\u05d9\u05d0\u05d5\u05e8 \u05d5\u05e2\u05d3\u05ea \u05d4\u05d0\u05dd",
94+
"name": "CommitteeParentName",
95+
"type": "string"
96+
},
97+
{
98+
"description": "\u05d4\u05d0\u05dd \u05d4\u05d5\u05d5\u05e2\u05d3\u05d4 \u05e4\u05e2\u05d9\u05dc\u05d4?",
99+
"name": "IsCurrent",
100+
"type": "boolean"
101+
},
102+
{
103+
"description": "\u05ea\u05d0\u05e8\u05d9\u05da \u05e2\u05d3\u05db\u05d5\u05df \u05d0\u05d7\u05e8\u05d5\u05df",
104+
"format": "%Y-%m-%d %H:%M:%S",
105+
"name": "LastUpdatedDate",
106+
"type": "datetime"
107+
}
108+
],
109+
"primaryKey": [
110+
"CommitteeID"
111+
]
112+
}
113+
}
114+
]
115+
}
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
{
2+
"bytes": 216380647,
3+
"count_of_rows": 2941876,
4+
"description": "Knesset committees and committee meetings data from Knesset dataservice API",
5+
"hash": "5e3087c6129d7b7da03f0e7ec93d1c48",
6+
"name": "knesset_data_committees",
7+
"resources": [
8+
{
9+
"bytes": 160722,
10+
"count_of_rows": 702,
11+
"dialect": {
12+
"delimiter": ",",
13+
"doubleQuote": true,
14+
"lineTerminator": "\r\n",
15+
"quoteChar": "\"",
16+
"skipInitialSpace": false
17+
},
18+
"dpp:streaming": true,
19+
"encoding": "utf-8",
20+
"format": "csv",
21+
"hash": "23974f6e86b9996d4930753f073a67f1",
22+
"name": "kns_committee",
23+
"path": "kns_committee.csv",
24+
"schema": {
25+
"fields": [
26+
{
27+
"description": "\u05e7\u05d5\u05d3 \u05d4\u05d5\u05d5\u05e2\u05d3\u05d4",
28+
"name": "CommitteeID",
29+
"type": "integer"
30+
},
31+
{
32+
"description": "\u05e9\u05dd \u05d4\u05d5\u05d5\u05e2\u05d3\u05d4",
33+
"name": "Name",
34+
"type": "string"
35+
},
36+
{
37+
"description": "\u05e7\u05d5\u05d3 \u05d4\u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d4 \u05e9\u05dc \u05d4\u05d5\u05d5\u05e2\u05d3\u05d4",
38+
"name": "CategoryID",
39+
"type": "integer"
40+
},
41+
{
42+
"description": "\u05ea\u05d9\u05d0\u05d5\u05e8 \u05d4\u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d4 \u05e9\u05dc \u05d4\u05d5\u05d5\u05e2\u05d3\u05d4 \u05d1\u05db\u05dc \u05db\u05e0\u05e1\u05ea, \u05db\u05dc \u05d4\u05d5\u05d5\u05e2\u05d3\u05d5\u05ea \u05de\u05d5\u05e7\u05de\u05d5\u05ea \u05de\u05d7\u05d3\u05e9. \u05d4\u05e9\u05d3\u05d4 \u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d4 \u05db\u05d5\u05dc\u05dc \u05d0\u05ea \u05e8\u05e9\u05d9\u05de\u05ea \u05d4\u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d5\u05ea \u05d4\u05e0\u05d5\u05e9\u05d0\u05d9\u05d5\u05ea \u05e9\u05d0\u05dc\u05d9\u05d4\u05df \u05de\u05e9\u05d5\u05d9\u05db\u05d5\u05ea \u05d4\u05d5\u05d5\u05e2\u05d3\u05d5\u05ea. \u05dc\u05de\u05e9\u05dc \u05d4\u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d4 \u05e9\u05dc \u05d5\u05e2\u05d3\u05ea \u05d4\u05e4\u05e0\u05d9\u05dd \u05d5\u05d4\u05d2\u05e0\u05ea \u05d4\u05e1\u05d1\u05d9\u05d1\u05d4 \u05d4\u05d9\u05d0 \"\u05e4\u05e0\u05d9\u05dd\" \u05d5\u05db\u05da \u05d4\u05d9\u05d4 \u05d2\u05dd \u05db\u05d0\u05e9\u05e8 \u05e9\u05dd \u05d4\u05d5\u05d5\u05e2\u05d3\u05d4 \u05d4\u05d9\u05d4 \u05d5\u05e2\u05d3\u05ea \u05d4\u05e4\u05e0\u05d9\u05dd \u05d5\u05d0\u05d9\u05db\u05d5\u05ea \u05d4\u05e1\u05d1\u05d9\u05d1\u05d4. \u05d2\u05dd \u05d5\u05e2\u05d3\u05d5\u05ea \u05d4\u05de\u05e9\u05e0\u05d4 \u05e9\u05dc \u05db\u05dc \u05d5\u05e2\u05d3\u05d4 \u05de\u05e9\u05d5\u05d9\u05db\u05d5\u05ea \u05dc\u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d4 \u05e9\u05dc\u05d4. \u05de\u05d3\u05d5\u05d1\u05e8 \u05d1\u05e9\u05d9\u05d5\u05da \u05e0\u05d5\u05e9\u05d0\u05d9 \u05e9\u05dc \u05d4\u05d5\u05d5\u05e2\u05d3\u05d5\u05ea.\n",
43+
"name": "CategoryDesc",
44+
"type": "string"
45+
},
46+
{
47+
"description": "\u05de\u05e1\u05e4\u05e8 \u05d4\u05db\u05e0\u05e1\u05ea",
48+
"name": "KnessetNum",
49+
"type": "integer"
50+
},
51+
{
52+
"description": "\u05e7\u05d5\u05d3 \u05e1\u05d5\u05d2 \u05d4\u05d5\u05d5\u05e2\u05d3\u05d4",
53+
"name": "CommitteeTypeID",
54+
"type": "integer"
55+
},
56+
{
57+
"description": "\u05ea\u05d9\u05d0\u05d5\u05e8 \u05e1\u05d5\u05d2 \u05d4\u05d5\u05d5\u05e2\u05d3\u05d4 (\u05e8\u05d0\u05e9\u05d9\u05ea, \u05de\u05d9\u05d5\u05d7\u05d3\u05ea, \u05de\u05e9\u05e0\u05d4, \u05de\u05e9\u05d5\u05ea\u05e4\u05ea, \u05d4\u05db\u05e0\u05e1\u05ea)\n",
58+
"name": "CommitteeTypeDesc",
59+
"type": "string"
60+
},
61+
{
62+
"description": "\u05db\u05ea\u05d5\u05d1\u05ea \u05d4\u05d3\u05d5\u05d0\"\u05dc \u05e9\u05dc \u05d4\u05d5\u05d5\u05e2\u05d3\u05d4",
63+
"name": "Email",
64+
"type": "string"
65+
},
66+
{
67+
"description": "\u05ea\u05d0\u05e8\u05d9\u05da \u05d4\u05ea\u05d7\u05dc\u05d4",
68+
"format": "%Y-%m-%d %H:%M:%S",
69+
"name": "StartDate",
70+
"type": "datetime"
71+
},
72+
{
73+
"description": "\u05ea\u05d0\u05e8\u05d9\u05da \u05e1\u05d9\u05d5\u05dd",
74+
"format": "%Y-%m-%d %H:%M:%S",
75+
"name": "FinishDate",
76+
"type": "datetime"
77+
},
78+
{
79+
"description": "\u05e7\u05d5\u05d3 \u05e1\u05d5\u05d2 \u05de\u05e9\u05e0\u05d4 \u05e9\u05dc \u05d4\u05d5\u05d5\u05e2\u05d3\u05d4",
80+
"name": "AdditionalTypeID",
81+
"type": "integer"
82+
},
83+
{
84+
"description": "\u05ea\u05d9\u05d0\u05d5\u05e8 \u05e1\u05d5\u05d2 \u05de\u05e9\u05e0\u05d4 \u05e9\u05dc \u05d4\u05d5\u05d5\u05e2\u05d3\u05d4 (\u05e7\u05d1\u05d5\u05e2\u05d4, \u05de\u05d9\u05d5\u05d7\u05d3\u05ea, \u05d7\u05e7\u05d9\u05e8\u05d4)",
85+
"name": "AdditionalTypeDesc",
86+
"type": "string"
87+
},
88+
{
89+
"description": "\u05e7\u05d5\u05d3 \u05d5\u05e2\u05d3\u05ea \u05d4\u05d0\u05dd (\u05e8\u05dc\u05d5\u05d5\u05e0\u05d8\u05d9 \u05e8\u05e7 \u05dc\u05d5\u05d5\u05e2\u05d3\u05ea \u05de\u05e9\u05e0\u05d4)",
90+
"name": "ParentCommitteeID",
91+
"type": "integer"
92+
},
93+
{
94+
"description": "\u05ea\u05d9\u05d0\u05d5\u05e8 \u05d5\u05e2\u05d3\u05ea \u05d4\u05d0\u05dd",
95+
"name": "CommitteeParentName",
96+
"type": "string"
97+
},
98+
{
99+
"description": "\u05d4\u05d0\u05dd \u05d4\u05d5\u05d5\u05e2\u05d3\u05d4 \u05e4\u05e2\u05d9\u05dc\u05d4?",
100+
"name": "IsCurrent",
101+
"type": "boolean"
102+
},
103+
{
104+
"description": "\u05ea\u05d0\u05e8\u05d9\u05da \u05e2\u05d3\u05db\u05d5\u05df \u05d0\u05d7\u05e8\u05d5\u05df",
105+
"format": "%Y-%m-%d %H:%M:%S",
106+
"name": "LastUpdatedDate",
107+
"type": "datetime"
108+
}
109+
],
110+
"primaryKey": [
111+
"CommitteeID"
112+
]
113+
}
114+
}
115+
]
116+
}

0 commit comments

Comments
 (0)