On Mon, Jan 19, 2015 at 05:41:41PM +0100, Pierre-Yves Chibon wrote:
I would like to hear if people are fine with me breaking this
already. It has
been running for a week now and afaik we have nothing (in prod or testing)
depending on it yet so it seems like the best time to make the schema evolve.
Basically I would like to go from:
{
"pkg1": {
"version": 0.2,
"arch": ["i686", "x86_64"],
...
},
"pkg2": {
"version": ...
},
...
}
To:
{
"packages": [
"pkg1": {
"version": 0.2,
"arch": ["i686", "x86_64"],
...
},
"pkg2": {
"version": ...
},
...
],
"arches": ["i686", "x86_64", "ppc64"...],
<eventually something if we need to>
}
For the record, here is the change:
===
@@ -187,7 +187,7 @@ def main():
for el in PATHS:
- output = {}
+ output = {'packages': {}, 'arches': []}
dbfiles = find_primary_sqlite(PATHS[el])
@@ -208,14 +208,18 @@ def main():
cnt = 0
new = 0
for pkg in session.query(Package).all():
- if pkg.basename in output:
- if pkg.arch not in output[pkg.basename]['arch']:
- output[pkg.basename]['arch'].append(pkg.arch)
+ if pkg.basename in output['packages']:
+ if pkg.arch not in output['packages'][
+ pkg.basename]['arch']:
+ output['packages'][pkg.basename]['arch'].append(
+ pkg.arch)
+ if pkg.arch not in output['arches']:
+ output['arches'].append(pkg.arch)
# TODO: checks if the evr is more recent or not
# (and update if it is)
else:
new += 1
- output[pkg.basename] = {
+ output['packages'][pkg.basename] = {
'arch': [pkg.arch],
'epoch': pkg.epoch,
'version': pkg.version,
@@ -225,7 +229,8 @@ def main():
print '%s packages in %s' % (cnt, cur_fold)
print '%s packages were new packages' % (new)
- print '\n%s packages retrieved in %s' % (len(output), el)
+ print '\n%s packages retrieved in %s' % (len(output['packages']),
el)
+ print '%s arches for in %s' % (len(output['arches']), el)
outputfile = 'pkg_%s.json' % el
with open(outputfile, 'w') as stream:
stream.write(json.dumps(output))
===
Pierre