rasa / scoop-directory

A searchable directory of buckets for the scoop package manager for Windows

Home Page:https://rasa.github.io/scoop-directory/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Generate a sqlite3 db file?

zhoujin7 opened this issue · comments

PRAGMA foreign_keys = false;

DROP TABLE IF EXISTS "app";
CREATE TABLE "app" (
  "id" INTEGER,
  "name" TEXT,
  "version" TEXT,
  "description" TEXT,
  "license" TEXT,
  "bucket_repo" TEXT
);

DROP TABLE IF EXISTS "bucket";
CREATE TABLE "bucket" (
  "score" real,
  "bucket_repo" TEXT NOT NULL,
  "apps" integer,
  "stars" integer,
  "forks" integer,
  "updated" text,
  PRIMARY KEY ("bucket_repo")
);

PRAGMA foreign_keys = true;

Maybe need add more table fields.

It can be easy search some info of scoop buckets with some code once generated a sqlite3 db file.

The command scoop search app can only search app that in added buckets. I want to write a cmdlet search all possible apps even it not in buckets that is added.

I write a simple web api that can be used in query all available apps.
https://github.com/zhoujin7/scoop-search

Python Flask or php provide service
https://github.com/zhoujin7/scoop-search/blob/master/app.py
https://github.com/zhoujin7/scoop-search/blob/master/search.php

Query client:
https://github.com/zhoujin7/scoop-search/blob/master/scoopSearch.ps1
image

I have deployed the program to my cloud server, but the query speed may be slow, even timeout.
🤷‍♂️

Hi @zhoujin7
This is a very nice thing! However, while your database updates daily, your query client doesn't seem to be up to date. I have created an issue for it in your repo zhoujin7/scoop-search#2
I created this simple PowerShell function that provides search functionality locally through the commandline, and uses (and updates itself) your SQLite database file.

param(
  [String]$Name,
  [String]$Description,
  [String]$Version,
  [String]$Bucket_Repo,
  [String]$Table = 'app',
  [Switch]$ForceUpdate = $false
)

$DBFile = 'D:\Data\Projects\Random\scoop_directory.db'

if ($Table -eq 'bucket') {
  if (!($Bucket_Repo)) {
    Write-Host "`nEnter bucket repository query.`n" -ForegroundColor Red
    return
  }
  $query = "SELECT bucket_repo,apps,updated,stars FROM bucket WHERE bucket_repo LIKE `"%$Bucket_Repo%`" ORDER BY apps DESC;"
} else {
  if (!($Name -or $Description)) {
    Write-Host "`nEnter at least one of name or description.`n" -ForegroundColor Red
    return
  }
  $query = "SELECT name,version,bucket_repo,description FROM app WHERE name LIKE `"%$Name%`" AND description LIKE `"%$Description%`" AND version LIKE `"%$Version%`" AND bucket_repo LIKE `"%$Bucket_Repo%`" ORDER BY version DESC;"
}

if (!(Test-Path $DBFile) -or ((Get-Date) - (Get-Item $DBFile).LastWriteTime).TotalHours -ge 24 -or $ForceUpdate) {
  Invoke-WebRequest 'https://raw.githubusercontent.com/zhoujin7/crawl-scoop-directory/master/scoop_directory.db' -UseBasicParsing -OutFile $DBFile
  Write-Host "`nUpdated database - $DBFile.`n" -ForegroundColor Green
}

return Invoke-SqliteQuery -Database $DBFile -Query $query

(Run Install-Module PSSQLite before using this.)