107 lines
2.9 KiB
Markdown
107 lines
2.9 KiB
Markdown
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
|
|
|
|
---
|
|
|
|
debshots used to use the 'paperclip' gem for file handling of images.
|
|
Paperclip was deprecated so something new was needed. At the same time
|
|
Rails 6.0 was released and offered file handling using ActiveStorage.
|
|
However ActiveStorage was so seriously flawed and incomplete in 2020
|
|
that I decided to go for the 'shrine' gem.
|
|
|
|
There is a Rake task that converts Paperclip attachments to Shrine attachments.
|
|
This is a one-time conversion.
|
|
|
|
Images are saved in four ways:
|
|
- original image
|
|
- thumb image (to be used in packages.debian.org)
|
|
- large image (original image with watermark on the right edge)
|
|
- medium image (up to 800x600)
|
|
- small image (up to 320x240) for gallery/grid views
|