chore: fix usage issues
This commit is contained in:
parent
0f8b6c6b29
commit
aa2fb4f5b9
4
.github/workflows/ci.yml
vendored
4
.github/workflows/ci.yml
vendored
@ -24,6 +24,10 @@ jobs:
|
||||
- name: "Install dependencies"
|
||||
run: "pnpm install --frozen-lockfile"
|
||||
|
||||
- run: "cp .env.example .env"
|
||||
- run: "cp apps/website/.env.example apps/website/.env"
|
||||
- run: "cp apps/api/.env.example apps/api/.env"
|
||||
|
||||
# - name: "Install Playwright"
|
||||
# run: "pnpm exec playwright install --with-deps"
|
||||
|
||||
|
@ -49,7 +49,7 @@ pnpm exec playwright install --with-deps
|
||||
node --run dev
|
||||
|
||||
# Start the development Docker services (e.g: Database)
|
||||
docker compose up --file compose.dev.yaml
|
||||
docker compose --file compose.dev.yaml up
|
||||
|
||||
# Lint
|
||||
node --run lint:editorconfig
|
||||
|
16
TODO.md
16
TODO.md
@ -29,9 +29,21 @@
|
||||
- [ ] Update logic to create custom `internal_links` table to make it work with latest wikipedia dumps (notably concerning the change in `pagelinks.sql` where the title is not included anymore, but instead it uses `pl_target_id`, foreign key to `linktarget`), last tested dumb working `20240420`
|
||||
- [ ] Handle redirects
|
||||
- [ ] Implement REST API (`api`) with JSON responses ([AdonisJS](https://adonisjs.com/)) to get shortest paths between 2 pages
|
||||
- [ ] Implement Wikipedia Game Solver (`website`) with inputs, button to submit, and list all pages to go from one to another, or none if it is not possible
|
||||
- [ ] Implement toast notifications for errors, warnings, and success messages
|
||||
- [x] Init AdonisJS project
|
||||
- [ ] Create Lucid models and migrations for Wikipedia Database Dump: `pages` and `internal_links` tables
|
||||
- [ ] Implement `GET /wikipedia/pages?title=Node.js` to search a page by title (not necessarily with the title sanitized, search with input by user to check if page exists)
|
||||
- [ ] Implement `GET /wikipedia/pages/internal-links/paths?from=Node.js&to=Linux` to get all the possible paths between 2 pages with titles sanitized
|
||||
- [ ] Implement Wikipedia Game Solver (`website`)
|
||||
- [x] Init Next.js project
|
||||
- [ ] Try to use <https://www.npmjs.com/package/@tuyau/client> for API calls
|
||||
- [ ] Hard code 2 pages to test if it works with `console.log` in the browser
|
||||
- [ ] Implement a form with inputs, button to submit, and list all pages to go from one to another, or none if it is not possible
|
||||
- [ ] Add images, links to the pages + good UI/UX
|
||||
- [ ] Implement toast notifications for errors, warnings, and success messages
|
||||
- [ ] Autocompletion page titles
|
||||
- [ ] Implement CLI (`cli`)
|
||||
- [ ] Init Clipanion project
|
||||
- [ ] Implement `wikipedia-game-solver internal-links --from="Node.js" --to="Linux"` command to get all the possible paths between 2 pages.
|
||||
- [ ] Add docs to add locale/edit translations, create component, install a dependency in a package, create a new package, technology used, architecture, links where it's deployed, how to use/install for end users, how to update dependencies with `npx taze -l` etc.
|
||||
- [ ] GitHub Mirror
|
||||
- [ ] Delete `TODO.md` file and instead use issues for the remaining tasks
|
||||
|
@ -36,6 +36,9 @@ export default defineConfig({
|
||||
},
|
||||
],
|
||||
preloads: [
|
||||
async () => {
|
||||
return await import("#start/database.js")
|
||||
},
|
||||
async () => {
|
||||
return await import("#start/routes.js")
|
||||
},
|
||||
|
@ -18,16 +18,18 @@ const AuthFinder = withAuthFinder(
|
||||
export default class User extends compose(BaseModel, AuthFinder) {
|
||||
protected tableName = "users"
|
||||
|
||||
@column({ columnName: "id", isPrimary: true })
|
||||
@column({ columnName: "id", serializeAs: "id", isPrimary: true })
|
||||
declare id: number
|
||||
|
||||
@column({
|
||||
columnName: "full_name",
|
||||
serializeAs: "fullName",
|
||||
})
|
||||
declare fullName: string | null
|
||||
|
||||
@column({
|
||||
columnName: "email",
|
||||
serializeAs: "email",
|
||||
})
|
||||
declare email: string
|
||||
|
||||
@ -36,12 +38,14 @@ export default class User extends compose(BaseModel, AuthFinder) {
|
||||
|
||||
@column.dateTime({
|
||||
columnName: "created_at",
|
||||
serializeAs: "createdAt",
|
||||
autoCreate: true,
|
||||
})
|
||||
declare createdAt: DateTime
|
||||
|
||||
@column.dateTime({
|
||||
columnName: "updated_at",
|
||||
serializeAs: "updatedAt",
|
||||
autoCreate: true,
|
||||
autoUpdate: true,
|
||||
})
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { defineConfig, drivers } from '@adonisjs/core/hash'
|
||||
import { defineConfig, drivers } from "@adonisjs/core/hash"
|
||||
|
||||
const hashConfig = defineConfig({
|
||||
default: 'scrypt',
|
||||
default: "scrypt",
|
||||
|
||||
list: {
|
||||
scrypt: drivers.scrypt({
|
||||
@ -19,6 +19,6 @@ export default hashConfig
|
||||
* Inferring types for the list of hashers you have configured
|
||||
* in your application.
|
||||
*/
|
||||
declare module '@adonisjs/core/types' {
|
||||
declare module "@adonisjs/core/types" {
|
||||
export interface HashersList extends InferHashers<typeof hashConfig> {}
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ export default class CreateUsersTable extends BaseSchema {
|
||||
protected tableName = "users"
|
||||
|
||||
public override async up(): Promise<void> {
|
||||
await this.schema.createTable(this.tableName, (table) => {
|
||||
void this.schema.createTable(this.tableName, (table) => {
|
||||
table.increments("id").notNullable()
|
||||
table.string("full_name").nullable()
|
||||
table.string("email", 254).notNullable().unique()
|
||||
@ -16,6 +16,6 @@ export default class CreateUsersTable extends BaseSchema {
|
||||
}
|
||||
|
||||
public override async down(): Promise<void> {
|
||||
await this.schema.dropTable(this.tableName)
|
||||
void this.schema.dropTable(this.tableName)
|
||||
}
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ export default class CreateAccessTokensTable extends BaseSchema {
|
||||
protected tableName = "auth_access_tokens"
|
||||
|
||||
public override async up(): Promise<void> {
|
||||
await this.schema.createTable(this.tableName, (table) => {
|
||||
void this.schema.createTable(this.tableName, (table) => {
|
||||
table.increments("id")
|
||||
table
|
||||
.integer("tokenable_id")
|
||||
@ -26,6 +26,6 @@ export default class CreateAccessTokensTable extends BaseSchema {
|
||||
}
|
||||
|
||||
public override async down(): Promise<void> {
|
||||
await this.schema.dropTable(this.tableName)
|
||||
void this.schema.dropTable(this.tableName)
|
||||
}
|
||||
}
|
||||
|
3
apps/api/src/start/database.ts
Normal file
3
apps/api/src/start/database.ts
Normal file
@ -0,0 +1,3 @@
|
||||
import { BaseModel, CamelCaseNamingStrategy } from "@adonisjs/lucid/orm"
|
||||
|
||||
BaseModel.namingStrategy = new CamelCaseNamingStrategy()
|
@ -9,7 +9,7 @@ services:
|
||||
MARIADB_PASSWORD: ${DATABASE_PASSWORD}
|
||||
MARIADB_ROOT_PASSWORD: ${DATABASE_PASSWORD}
|
||||
MARIADB_DATABASE: ${DATABASE_NAME}
|
||||
command:
|
||||
command: |
|
||||
--innodb_buffer_pool_size=4G
|
||||
--key-buffer-size=4G
|
||||
--innodb_log_buffer_size=256M
|
||||
@ -33,9 +33,9 @@ services:
|
||||
environment:
|
||||
ADMINER_DEFAULT_SERVER: "wikipedia-solver-dev-database"
|
||||
volumes:
|
||||
- "./adminer/default-orange.css:/var/www/html/adminer.css"
|
||||
- "./adminer/logo.png:/var/www/html/logo.png"
|
||||
- "./adminer/fonts/:/var/www/html/fonts"
|
||||
- "./data/adminer/default-orange.css:/var/www/html/adminer.css"
|
||||
- "./data/adminer/logo.png:/var/www/html/logo.png"
|
||||
- "./data/adminer/fonts/:/var/www/html/fonts"
|
||||
|
||||
volumes:
|
||||
wikipedia-solver-dev-mariadb-data:
|
||||
|
@ -35,7 +35,7 @@ services:
|
||||
MARIADB_PASSWORD: ${DATABASE_PASSWORD}
|
||||
MARIADB_ROOT_PASSWORD: ${DATABASE_PASSWORD}
|
||||
MARIADB_DATABASE: ${DATABASE_NAME}
|
||||
command:
|
||||
command: |
|
||||
--innodb_buffer_pool_size=4G
|
||||
--key-buffer-size=4G
|
||||
--innodb_log_buffer_size=256M
|
||||
|
@ -9,7 +9,7 @@ services:
|
||||
MARIADB_PASSWORD: ${DATABASE_PASSWORD}
|
||||
MARIADB_ROOT_PASSWORD: ${DATABASE_PASSWORD}
|
||||
MARIADB_DATABASE: ${DATABASE_NAME}
|
||||
command:
|
||||
command: |
|
||||
--innodb_buffer_pool_size=4G
|
||||
--key-buffer-size=4G
|
||||
--innodb_log_buffer_size=256M
|
||||
|
462
pnpm-lock.yaml
generated
462
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user