[haiku-depot-web] Update; Multi-Repository

  • From: Andrew Lindesay <apl@xxxxxxxxxxxxxx>
  • To: haiku-depot-web@xxxxxxxxxxxxx
  • Date: Mon, 22 Jun 2015 22:34:12 +1200

Hi;

I'm finally there with "something testable" with respect to multi-repository.

There has been quite a bit of structural data-model change which is disruptive and so there may well be a few issues come up.

The code is there now and a new version is on tag "haikudepotserver-1.0.43".

Oliver; as a first step, could you please restore the test database from a copy of the current production database and then deploy "haikudepotserver-1.0.43" into the *test* environment?

---

Migration
=========

The database will be migrated automatically at deployment time. The derived user ratings should be the only aspect that will not be migrated. To re-build those derived user ratings, a root user will need to do "Menu > Root Operations > Derive and store user ratings for all packages". This will take a few moments to run.

---

Russian Localization
====================

This is not up to date as I'm not able to reach Dmitriy at this time. I've marked the changes in the Russian properties file as "#TODO " so it will be easy to create a pull-request to cover those.

---

Simple View
===========

The "simple view" is currently not completely working and will need some work.

---

Repository Code
===============

Each repository in HDS has a code. At the present time, the only known code is "haikudepot". I am not sure about a means by which we can standardize codes for other repositories. Each repository has a file called "repo.info" which looks a bit like this;

---
name HaikuPorts
vendor "Haiku Project"
summary "The HaikuPorts repository (for Haiku hrev49306)"
priority 1
url http://packages.haiku...785d05e1f8ae31b
architecture x86_gcc2
---

Perhaps we can generally take the "name" field, remove anything not [A-Za-z0-9] and lower-case it? Stephan; do you have any thoughts on that?

---

Repository Source Codes
=======================

Each repository can have one or more sources. The current sources are;

* haikuportsx8664
* haikuportsx86
* haikuportsx86gcc2

These are fairly arbitrary, but it is good to have something roughly meaningful and systematic. This is only really used from outside the application server in order to prompt the application server to re-import from a specific source.

---

Imports
=======

The Import URLs have changed. The updated import url paths look like this;

* /repository/haikudepot/import
* /repository/haikudepot/source/haikuportsx8664/import

If you import the repository (without a specific source) then it will import from all sources. See the API documentation for more detail on this.

---

API Changes
===========

The API has been altered to allow passing of repositories in some cases as appropriate. Looking at "WebAppInterface.cpp" I can see that a number of API are being used by HaikuDepot desktop application. The following are not effected by this change;

* updateUserRating
* generateCaptcha
* createUser
* authenticateUser

The following are effected by this change and medium-term will require a repository code to be supplied. In the short-term there is limited handling so that the older HaikuDepot desktop application will continue to work with the production "haikudepot" repository for the time being if no repository is supplied. The aim is to remove this as soon for;

* getBulkPkg
* getPkg
* searchUserRatings
* getUserRatingByUserAndPkgVersion
* createUserRating

Adding "extra fields" and calling the older version should be OK, but I can't easily broadly test an updated HaikuDepot desktop application talking to the older API with updated fields.

---

JavaScript Automated Testing
============================

The build process now also includes some JavaScript automated testing.

--
Andrew Lindesay

Other related posts: