Skip to content

Commit a6588f6

Browse files
authored
Merge pull request #282 from nexB/244-update-package-model
244 update package model
2 parents 26baae8 + 652b250 commit a6588f6

File tree

5 files changed

+36
-404
lines changed

5 files changed

+36
-404
lines changed

assets/app/js/controllers/aboutCodeClueDataTable.js

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -791,10 +791,9 @@ AboutCodeClueDataTable.PACKAGE_COLUMNS =
791791
'visible': false
792792
},
793793
{
794-
'data': 'packages_asserted_licenses_license[<hr/>]',
795-
'title': 'Package Asserted License',
796-
'name': 'packages_asserted_licenses_license',
797-
'bar_chart_class': 'bar-chart-package-infos',
794+
'data': 'packages_declared_licensing[<hr/>]',
795+
'title': 'Package Declared Licensing',
796+
'name': 'packages_declared_licensing',
798797
'visible': false
799798
},
800799
{
@@ -804,27 +803,17 @@ AboutCodeClueDataTable.PACKAGE_COLUMNS =
804803
'bar_chart_class': 'bar-chart-package-infos',
805804
'visible': false
806805
},
807-
{
808-
'data': 'packages_authors_name[<hr/>]',
809-
'title': 'Package Authors Name',
810-
'name': 'packages_authors_name',
811-
'bar_chart_class': 'bar-chart-package-infos',
812-
'visible': false
813-
},
806+
// add package parties
814807
{
815808
'data': 'packages_homepage_url',
816809
'title': 'Package Homepage URL',
817810
'name': 'packages_homepage_url',
818811
'visible': false
819812
},
820813
{
821-
'data': function (row) {
822-
return row.packages_download_urls.map((hrefs) => {
823-
return hrefs.map(Utils.anchorTag).join('<br/>');
824-
}).join('<hr/>');
825-
},
826-
'title': 'Package Download URLs',
827-
'name': 'packages_download_urls',
814+
'data': 'packages_download_url',
815+
'title': 'Package Download URL',
816+
'name': 'packages_download_url',
828817
'visible': false
829818
},
830819
];

assets/app/js/models/flatFile.js

Lines changed: 18 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -68,74 +68,30 @@ module.exports = function(sequelize, DataTypes) {
6868
is_source: DataTypes.BOOLEAN,
6969
is_script: DataTypes.BOOLEAN,
7070
packages_type: jsonDataType('packages_type'),
71+
packages_namespace: jsonDataType('packages_dataspace'),
7172
packages_name: jsonDataType('packages_name'),
7273
packages_version: jsonDataType('packages_version'),
74+
packages_qualifiers: jsonDataType('packages_qualifiers'),
75+
packages_subpath: jsonDataType('packages_subpath'),
7376
packages_primary_language: jsonDataType('packages_primary_language'),
74-
packages_packaging: jsonDataType('packages_packaging'),
75-
packages_summary: jsonDataType('packages_summary'),
77+
packages_code_type: jsonDataType('packages_code_type'),
7678
packages_description: jsonDataType('packages_description'),
77-
packages_payload_type: jsonDataType('packages_payload_type'),
7879
packages_size: jsonDataType('packages_size'),
7980
packages_release_date: jsonDataType('packages_release_date'),
80-
packages_authors_type: jsonDataType('packages_authors_type'),
81-
packages_authors_name: jsonDataType('packages_authors_name'),
82-
packages_authors_email: jsonDataType('packages_authors_email'),
83-
packages_authors_url: jsonDataType('packages_authors_url'),
84-
packages_maintainers_type: jsonDataType('packages_maintainers_type'),
85-
packages_maintainers_name: jsonDataType('packages_maintainers_name'),
86-
packages_maintainers_email: jsonDataType('packages_maintainers_email'),
87-
packages_maintainers_url: jsonDataType('packages_maintainers_url'),
88-
packages_contributors_type: jsonDataType('packages_contributors_type'),
89-
packages_contributors_name: jsonDataType('packages_contributors_name'),
90-
packages_contributors_email: jsonDataType('packages_contributors_email'),
91-
packages_contributors_url: jsonDataType('packages_contributors_url'),
92-
packages_owners_type: jsonDataType('packages_owners_type'),
93-
packages_owners_name: jsonDataType('packages_owners_name'),
94-
packages_owners_email: jsonDataType('packages_owners_email'),
95-
packages_owners_url: jsonDataType('packages_owners_url'),
96-
packages_packagers_type: jsonDataType('packages_packagers_type'),
97-
packages_packagers_name: jsonDataType('packages_packagers_name'),
98-
packages_packagers_email: jsonDataType('packages_packagers_email'),
99-
packages_packagers_url: jsonDataType('packages_packagers_url'),
100-
packages_distributors_type: jsonDataType('packages_distributors_type'),
101-
packages_distributors_name: jsonDataType('packages_distributors_name'),
102-
packages_distributors_email: jsonDataType('packages_distributors_email'),
103-
packages_distributors_url: jsonDataType('packages_distributors_url'),
104-
packages_vendors_type: jsonDataType('packages_vendors_type'),
105-
packages_vendors_name: jsonDataType('packages_vendors_name'),
106-
packages_vendors_email: jsonDataType('packages_vendors_email'),
107-
packages_vendors_url: jsonDataType('packages_vendors_url'),
10881
packages_keywords: jsonDataType('packages_keywords'),
109-
packages_keywords_doc_url: jsonDataType('packages_keywords_doc_url'),
110-
packages_metafile_locations: jsonDataType('packages_metafile_locations'),
111-
packages_metafile_urls: jsonDataType('packages_metafile_urls'),
11282
packages_homepage_url: jsonDataType('packages_homepage_url'),
113-
packages_notes: jsonDataType('packages_notes'),
114-
packages_download_urls: jsonDataType('packages_download_urls'),
115-
packages_download_sha1: jsonDataType('packages_download_sha1'),
116-
packages_download_sha256: jsonDataType('packages_download_sha256'),
117-
packages_download_md5: jsonDataType('packages_download_md5'),
83+
packages_download_url: jsonDataType('packages_download_url'),
84+
packages_donwload_checksums: jsonDataType('packages_download_checksums'),
11885
packages_bug_tracking_url: jsonDataType('packages_bug_tracking_url'),
119-
packages_support_contacts: jsonDataType('packages_support_contacts'),
12086
packages_code_view_url: jsonDataType('packages_code_view_url'),
12187
packages_vcs_tool: jsonDataType('packages_vcs_tool'),
12288
packages_vcs_repository: jsonDataType('packages_vcs_repository'),
12389
packages_vcs_revision: jsonDataType('packages_vcs_revision'),
124-
packages_copyright_top_level: jsonDataType('packages_copyright_top_level'),
125-
packages_copyrights: jsonDataType('packages_copyrights'),
126-
packages_asserted_licenses_license: jsonDataType('packages_asserted_licenses_license'),
127-
packages_asserted_licenses_url: jsonDataType('packages_asserted_licenses_url'),
128-
packages_asserted_licenses_text: jsonDataType('packages_asserted_licenses_text'),
129-
packages_asserted_licenses_notice: jsonDataType('packages_asserted_licenses_notice'),
130-
packages_legal_file_locations: jsonDataType('packages_legal_file_locations'),
90+
packages_declared_licensing: jsonDataType('packages_declared_licensing'),
13191
packages_license_expression: jsonDataType('packages_license_expression'),
132-
packages_license_texts: jsonDataType('packages_license_texts'),
133-
packages_notice_texts: jsonDataType('packages_notice_texts'),
92+
packages_notice_text: jsonDataType('packages_notice_text'),
13493
packages_dependencies: jsonDataType('packages_dependencies'),
135-
packages_related_packages_type: jsonDataType('packages_related_packages_type'),
136-
packages_related_packages_name: jsonDataType('packages_related_packages_name'),
137-
packages_related_packages_version: jsonDataType('packages_related_packages_version'),
138-
packages_related_packages_payload_type: jsonDataType('packages_related_packages_payload_type')
94+
packages_related_packages: jsonDataType('packages_related_packages'),
13995
},
14096
{
14197
timestamps: false
@@ -215,74 +171,30 @@ module.exports = function(sequelize, DataTypes) {
215171
is_source: file.is_source,
216172
is_script: file.is_script,
217173
packages_type: getValues(file.packages, 'type'),
174+
pacages_namespace: getValues(file.packages, 'namespace'),
218175
packages_name: getValues(file.packages, 'name'),
219176
packages_version: getValues(file.packages, 'version'),
177+
packages_qualifiers: getValues(file.packages, 'qualifiers'),
178+
packages_subpath: getValues(file.packages, 'subpath'),
220179
packages_primary_language: getValues(file.packages, 'primary_language'),
221-
packages_packaging: getValues(file.packages, 'packaging'),
222-
packages_summary: getValues(file.packages, 'summary'),
180+
packages_code_type: getValues(file.packages, 'code_type'),
223181
packages_description: getValues(file.packages, 'description'),
224-
packages_payload_type: getValues(file.packages, 'payload_type'),
225182
packages_size: getValues(file.packages, 'size'),
226183
packages_release_date: getValues(file.packages, 'release_date'),
227-
packages_authors_type: getNestedValues(file.packages, 'authors', 'type'),
228-
packages_authors_name: getNestedValues(file.packages, 'authors', 'name'),
229-
packages_authors_email: getNestedValues(file.packages, 'authors', 'email'),
230-
packages_authors_url: getNestedValues(file.packages, 'authors', 'url'),
231-
packages_maintainers_type: getNestedValues(file.packages, 'maintainers', 'type'),
232-
packages_maintainers_name: getNestedValues(file.packages, 'maintainers', 'name'),
233-
packages_maintainers_email: getNestedValues(file.packages, 'maintainers', 'email'),
234-
packages_maintainers_url: getNestedValues(file.packages, 'maintainers', 'url'),
235-
packages_contributors_type: getNestedValues(file.packages, 'contributors', 'type'),
236-
packages_contributors_name: getNestedValues(file.packages, 'contributors', 'name'),
237-
packages_contributors_email: getNestedValues(file.packages, 'contributors', 'email'),
238-
packages_contributors_url: getNestedValues(file.packages, 'contributors', 'url'),
239-
packages_owners_type: getNestedValues(file.packages, 'owners', 'type'),
240-
packages_owners_name: getNestedValues(file.packages, 'owners', 'name'),
241-
packages_owners_email: getNestedValues(file.packages, 'owners', 'email'),
242-
packages_owners_url: getNestedValues(file.packages, 'owners', 'url'),
243-
packages_packagers_type: getNestedValues(file.packages, 'packagers', 'type'),
244-
packages_packagers_name: getNestedValues(file.packages, 'packagers', 'name'),
245-
packages_packagers_email: getNestedValues(file.packages, 'packagers', 'email'),
246-
packages_packagers_url: getNestedValues(file.packages, 'packagers', 'url'),
247-
packages_distributors_type: getNestedValues(file.packages, 'distributors', 'type'),
248-
packages_distributors_name: getNestedValues(file.packages, 'distributors', 'name'),
249-
packages_distributors_email: getNestedValues(file.packages, 'distributors', 'email'),
250-
packages_distributors_url: getNestedValues(file.packages, 'distributors', 'url'),
251-
packages_vendors_type: getNestedValues(file.packages, 'vendors', 'type'),
252-
packages_vendors_name: getNestedValues(file.packages, 'vendors', 'name'),
253-
packages_vendors_email: getNestedValues(file.packages, 'vendors', 'email'),
254-
packages_vendors_url: getNestedValues(file.packages, 'vendors', 'url'),
255184
packages_keywords: getValues(file.packages, 'keywords'),
256-
packages_keywords_doc_url: getValues(file.packages, 'keywords_doc_url'),
257-
packages_metafile_locations: getValues(file.packages, 'metafile_locations'),
258-
packages_metafile_urls: getValues(file.packages, 'metafile_urls'),
259185
packages_homepage_url: getValues(file.packages, 'homepage_url'),
260-
packages_notes: getValues(file.packages, 'notes'),
261-
packages_download_urls: getValues(file.packages, 'download_urls'),
262-
packages_download_sha1: getValues(file.packages, 'download_sha1'),
263-
packages_download_sha256: getValues(file.packages, 'download_sha256'),
264-
packages_download_md5: getValues(file.packages, 'download_md5'),
186+
packages_download_url: getValues(file.packages, 'download_url'),
187+
packages_download_checksums: getValues(file.packages, 'download_checksums'),
265188
packages_bug_tracking_url: getValues(file.packages, 'bug_tracking_url'),
266-
packages_support_contacts: getValues(file.packages, 'support_contacts'),
267189
packages_code_view_url: getValues(file.packages, 'code_view_url'),
268190
packages_vcs_tool: getValues(file.packages, 'vcs_tool'),
269191
packages_vcs_repository: getValues(file.packages, 'vcs_repository'),
270192
packages_vcs_revision: getValues(file.packages, 'vcs_revision'),
271-
packages_copyright_top_level: getValues(file.packages, 'copyright_top_level'),
272-
packages_copyrights: getValues(file.packages, 'copyrights'),
273-
packages_asserted_licenses_license: getNestedValues(file.packages, 'asserted_licenses', 'license'),
274-
packages_asserted_licenses_url: getNestedValues(file.packages, 'asserted_licenses', 'url'),
275-
packages_asserted_licenses_text: getNestedValues(file.packages, 'asserted_licenses', 'text'),
276-
packages_asserted_licenses_notice: getNestedValues(file.packages, 'asserted_licenses', 'notice'),
277-
packages_legal_file_locations: getValues(file.packages, 'legal_file_locations'),
193+
packages_declared_licensing: getValues(file.packages, 'declared_licensing'),
278194
packages_license_expression: getValues(file.packages, 'license_expression'),
279-
packages_license_texts: getValues(file.packages, 'license_texts'),
280-
packages_notice_texts: getValues(file.packages, 'notice_texts'),
195+
packages_notice_text: getValues(file.packages, 'notice_text'),
281196
packages_dependencies: getValues(file.packages, 'dependencies'),
282-
packages_related_packages_type: getNestedValues(file.packages, 'related_packages', 'type'),
283-
packages_related_packages_name: getNestedValues(file.packages, 'related_packages', 'name'),
284-
packages_related_packages_version: getNestedValues(file.packages, 'related_packages', 'version'),
285-
packages_related_packages_payload_type: getNestedValues(file.packages, 'related_packages', 'payload_type')
197+
packages_related_packages: getValues(file.packages, 'related_packages'),
286198
};
287199
};
288200

@@ -295,12 +207,3 @@ function getValues(array, key) {
295207
return [elem[key] ? elem[key] : []];
296208
});
297209
}
298-
299-
// [{key: [{ nestedKey: val0}], {key: [ nestedKey: val1]}] => [val0, val1]
300-
function getNestedValues(array, key, nestedKey) {
301-
return $.map(array ? array : [], (elem) => {
302-
return $.map(elem[key] ? elem[key] : [], (nestedElem) => {
303-
return [nestedElem[nestedKey] ? nestedElem[nestedKey] : []];
304-
});
305-
});
306-
}

assets/app/js/models/package.js

Lines changed: 11 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -21,49 +21,34 @@ module.exports = function(sequelize, DataTypes) {
2121
'packages',
2222
{
2323
type: DataTypes.STRING,
24+
namespace: DataTypes.STRING,
2425
name: DataTypes.STRING,
2526
version: DataTypes.STRING,
27+
qualifiers: DataTypes.STRING,
28+
subpath: DataTypes.STRING,
2629
primary_language: DataTypes.STRING,
27-
packaging: DataTypes.STRING,
28-
summary: DataTypes.STRING,
30+
code_type: DataTypes.STRING,
2931
description: DataTypes.STRING,
30-
payload_type: DataTypes.STRING,
3132
size: DataTypes.INTEGER,
3233
release_date: DataTypes.STRING,
33-
authors: jsonDataType('authors'),
34-
maintainers: jsonDataType('maintainers'),
35-
contributors: jsonDataType('contributors'),
36-
owners: jsonDataType('owners'),
37-
packagers: jsonDataType('packagers'),
38-
distributors: jsonDataType('distributors'),
39-
vendors: jsonDataType('vendors'),
34+
parties: jsonDataType('parties'),
4035
keywords: jsonDataType('keywords'),
41-
keywords_doc_url: DataTypes.STRING,
42-
metafile_locations: jsonDataType('metafile_locations'),
43-
metafile_urls: jsonDataType('metafile_urls'),
4436
homepage_url: DataTypes.STRING,
45-
notes: DataTypes.STRING,
46-
download_urls: jsonDataType('download_urls'),
47-
download_sha1: DataTypes.STRING,
48-
download_sha256: DataTypes.STRING,
49-
download_md5: DataTypes.STRING,
37+
download_url: DataTypes.STRING,
38+
download_checksums: jsonDataType('download_checksums'),
5039
bug_tracking_url: DataTypes.STRING,
51-
support_contacts: jsonDataType('support_contacts'),
5240
code_view_url: DataTypes.STRING,
5341
vcs_tool: DataTypes.STRING,
5442
vcs_repository: DataTypes.STRING,
5543
vcs_revision: DataTypes.STRING,
56-
copyright_top_level: DataTypes.STRING,
57-
copyrights: jsonDataType('copyrights'),
58-
asserted_licenses: jsonDataType('asserted_licenses'),
59-
legal_file_locations: jsonDataType('legal_file_locations'),
44+
copyright: DataTypes.STRING,
6045
license_expression: DataTypes.STRING,
61-
license_texts: jsonDataType('license_texts'),
62-
notice_texts: jsonDataType('notice_texts'),
46+
declared_licensing: DataTypes.STRING,
47+
notice_text: DataTypes.STRING,
6348
dependencies: jsonDataType('dependencies'),
6449
related_packages: jsonDataType('related_packages')
6550
},
6651
{
6752
timestamps: false
6853
});
69-
};
54+
};

test/aboutCodeDB.test.js

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ chai.use(chaiSubset);
2929
const AboutCodeDB = require('../assets/app/js/aboutCodeDB');
3030

3131
const SCANCODE_FILE = __dirname + '/data/scancode-results.json';
32-
const FLATTENED_FILE = __dirname + '/data/flattened-scancode-results.json';
3332
const DUPLICATE_PATH_FILE = __dirname + '/data/scancode-duplicate-path-values.json';
3433

3534
describe('checkAboutCodeDB', () => {
@@ -305,25 +304,6 @@ describe('checkAboutCodeDB', () => {
305304
});
306305
});
307306

308-
describe('addFlattenedRows', () => {
309-
const results = JSON.parse(fs.readFileSync(FLATTENED_FILE, 'utf8'));
310-
it('should add rows to the flattened files table', () => {
311-
const aboutCodeDB = new AboutCodeDB();
312-
313-
return aboutCodeDB.sync
314-
.then(() => aboutCodeDB.db.FlatFile.count())
315-
.then((rowCount) => assert.strictEqual(rowCount, 0))
316-
.then(() => aboutCodeDB.addFromJson(SCANCODE_FILE))
317-
.then(() => aboutCodeDB.db.FlatFile.count())
318-
.then((rowCount) => assert.strictEqual(rowCount, 3))
319-
.then(() => aboutCodeDB.db.FlatFile.findAll())
320-
.then((rows) => {
321-
rows = rows.map((row) => row.toJSON());
322-
assert.containSubset(rows, results);
323-
});
324-
});
325-
});
326-
327307
describe('getFileCount', () => {
328308
it('should return the ScanCode files_count', () => {
329309
const aboutCodeDB = new AboutCodeDB();

0 commit comments

Comments
 (0)