debshots/doc/README.DeveloperNotes.md
2018-08-08 14:14:40 +02:00

2.2 KiB

This file collects various notes about how certain aspects are implemented.

Full text search

The pg_search Ruby gem is used for full-text searched in Rails. See: https://github.com/Casecommons/pg_search

Reformatted SQL query for fulltext search:

SELECT COUNT(*) FROM "packages" WHERE ( ( ( to_tsvector('simple', coalesce("packages"."name"::text, '')) || to_tsvector('simple', coalesce("packages"."description"::text, '')) || to_tsvector('simple', coalesce("packages"."long_description"::text, '')) ) @@ ( to_tsquery('simple', '''' || 'browser' || ' ''') ) ) )

Create search index to speed up searches significantly

CREATE INDEX packages_gin ON packages USING GIN( (to_tsvector('simple', coalesce("packages"."name"::text, '')) || to_tsvector('simple', coalesce("packages"."description"::text, '')) || to_tsvector('simple', coalesce("packages"."long_description"::text, ''))) );


Used: https://github.com/semaperepelitsa/jquery.fileupload-rails Which is a gem for: https://github.com/blueimp/jQuery-File-Upload


Paperclip for attachment/screenshot file handlind within ActiveRecord https://github.com/thoughtbot/paperclip

Rails 5 is said to contain functionality like that already. Might be worth migrating to that at some time.


Importer

How Debian repositories are organized: https://wiki.debian.org/RepositoryFormat


Logging from within the application into the database's "log" table:

Log.log "foo" or with section (default='frontend'): Log.log "foo", "importer"


To create admin users

rails c

User.new(email: 'email@christoph-haas.de', password: 'secret').save


Multiple distributions (e.g. Ubuntu, Debian)

  • new table: distributions

    • id
    • name (e.g. "Debian")
    • description (e.g. "The Debian GNU/Linux distribution")
    • url (http://www.debian.org/)
    • type (apt, later: rpm)
    • logo
  • screenshots: new field for source_id

Admin interface to manage sources


AppStream data

  • screenshots: new field for type ('user-generated', 'upstream', 'logo') user-generated: uploaded by a random user upstream: official screenshot from the developer logo: not a screenshot - just a logo