The cloud portion of Nidus
Find a file
Eli Ribble 109495b702
Track access token and refresh token expiry
Also make a bunch more progress on actually updating the tokens when we
need them updated.
2025-11-07 05:46:41 +00:00
arcgis-go@e47b350f92 Track access token and refresh token expiry 2025-11-07 05:46:41 +00:00
dberrors Save oauth tokens to the database for use later. 2025-11-06 00:23:58 +00:00
dbinfo Track access token and refresh token expiry 2025-11-07 05:46:41 +00:00
enums Retroactively fix some SQL schema problems 2025-11-05 17:36:32 +00:00
factory Track access token and refresh token expiry 2025-11-07 05:46:41 +00:00
migrations Track access token and refresh token expiry 2025-11-07 05:46:41 +00:00
models Track access token and refresh token expiry 2025-11-07 05:46:41 +00:00
sql Track access token and refresh token expiry 2025-11-07 05:46:41 +00:00
static Add a basic main page with login 2025-11-03 22:13:19 +00:00
templates Check if we have oauth information, only prompt if its missing 2025-11-06 22:58:18 +00:00
.air.toml Create clean shutdown logic for http worker 2025-11-07 02:29:34 +00:00
.gitattributes Add a basic main page with login 2025-11-03 22:13:19 +00:00
.gitignore Ignore air's temp building directory 2025-11-05 17:17:21 +00:00
.gitmodules Start using the ArcGIS client to get user data with the token 2025-11-06 22:28:56 +00:00
arcgis.go Track access token and refresh token expiry 2025-11-07 05:46:41 +00:00
auth.go Format all source files. 2025-11-06 22:31:51 +00:00
bobgen.yaml Add generated Bob database integration 2025-11-04 23:11:32 +00:00
database.go Create clean shutdown logic for http worker 2025-11-07 02:29:34 +00:00
default.nix Add a basic 'hello-world' buildable with Nix 2025-11-03 12:22:06 +00:00
endpoint.go Check if we have oauth information, only prompt if its missing 2025-11-06 22:58:18 +00:00
errors.go Save information about the organization and user from ArcGIS 2025-11-07 02:07:33 +00:00
fileserver.go Format all source files. 2025-11-06 22:31:51 +00:00
flake.lock Add a basic 'hello-world' buildable with Nix 2025-11-03 12:22:06 +00:00
flake.nix Add user sessions and login 2025-11-05 17:15:33 +00:00
go.mod Start using the ArcGIS client to get user data with the token 2025-11-06 22:28:56 +00:00
go.sum Start using the ArcGIS client to get user data with the token 2025-11-06 22:28:56 +00:00
html.go Check if we have oauth information, only prompt if its missing 2025-11-06 22:58:18 +00:00
lefthook.yml Add lefthook configuration for formatting 2025-11-06 22:31:29 +00:00
LICENSE Initial commit 2025-11-03 05:12:02 -07:00
main.go Track access token and refresh token expiry 2025-11-07 05:46:41 +00:00
README.md Save information about the organization and user from ArcGIS 2025-11-07 02:07:33 +00:00
response.go Format all source files. 2025-11-06 22:31:51 +00:00

Nidus Sync

This is the software that powers Nidus Cloud Sync.

Building from source

First, you'll need Nix.

Then:

nix develop
go build .

Running

> BASE_URL=https://sync.nidus.cloud ARCGIS_CLIENT_ID=foo ARCGIS_CLIENT_SECRET=bar POSTGRES_DSN='postgresql://?host=/var/run/postgresql&dbname=nidus-sync' ./nidus-sync

Hacking

air

This project uses air for fast compile-and-test loops. You can run it with:

> BASE_URL=https://sync.nidus.cloud ARCGIS_CLIENT_ID=foo ARCGIS_CLIENT_SECRET=bar POSTGRES_DSN='postgresql://?host=/var/run/postgresql&dbname=nidus-sync' air

bob

This uses the bob query framework. You can regenerate the models for bob with:

PSQL_DSN="postgresql://dbname?host=/var/run/postgresql&sslmode=disable" go run github.com/stephenafamo/bob/gen/bobgen-psql@latest"
PSQL_DSN="postgresql://?host=/var/run/postgresql&sslmode=disable&dbname=nidus-sync" go run github.com/stephenafamo/bob/gen/bobgen-psql@latest

This will generate a bunch of files. They're already committed, you only need this if you change the database schema in some way.

goose

This uses goose. You can use the goose command line to check status and make changes

> cd migrations
> GOOSE_DRIVER=postgres GOOSE_DBSTRING="dbname=nidus-sync sslmode=disable" goose status
> GOOSE_DRIVER=postgres GOOSE_DBSTRING="dbname=nidus-sync sslmode=disable" goose down
> GOOSE_DRIVER=postgres GOOSE_DBSTRING="dbname=nidus-sync sslmode=disable" goose up