Skip to content
Open

Eu #7

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
190 commits
Select commit Hold shift + click to select a range
91ea4a2
OpenCollection now return error + fix tests
fulldump Apr 2, 2022
9ee2bd4
change persistence "layer" (now it is a monolith), introduce command …
fulldump Apr 3, 2022
5f71a7d
start API rest
fulldump Apr 3, 2022
866056f
export Collection.Rows and Collection.Indexes + fix addRow error + so…
fulldump Apr 4, 2022
8e1733b
fix concurrency issue on insert
fulldump Apr 5, 2022
e6e9e1a
split main into packages "configuration" and "api"
fulldump Apr 5, 2022
78ea681
handle SIGTERM and SIGINT signals to close http server and files prop…
fulldump Apr 5, 2022
e461cf6
Add license AGPL3
fulldump Apr 9, 2022
c2bfb9b
Merge pull request #1 from fulldump/add-license-agpl3
fulldump Apr 9, 2022
5946ebd
Implement Delete and:
fulldump Apr 20, 2022
44d0834
add data model example diagram
fulldump Apr 21, 2022
ecebbaa
feat: Implement update with json patch (RFC7386) + test
fulldump May 11, 2022
ab0530b
feat: expose PatchBy via HTTP API
fulldump May 11, 2022
2b4cac0
fix: patch commands on OpenCollection
fulldump May 11, 2022
7eafc1e
feat: Add static files
fulldump May 13, 2022
b83d565
feat: add configuration (goconfig)
fulldump May 14, 2022
6e1d84c
feat: implement delete collection
fulldump May 14, 2022
00e430f
fix: createCollection (avoid name duplication)
fulldump May 14, 2022
2bddb11
feat: WIP working UI
fulldump May 14, 2022
08ffa16
feat: add dark mode
fulldump May 15, 2022
adc687a
fix: add status response to handler `indexFindBy`
fulldump May 16, 2022
fc01ee7
feat: better web UX
fulldump May 16, 2022
d04e38d
feat: add UI for insert
fulldump May 16, 2022
f56877e
fix: UI typo invoking fetchFullScan
fulldump May 17, 2022
a1ca403
add: UI fetchFullScanExperimental
fulldump May 17, 2022
43c1ba2
fix: delete command was trying to persist on collection startup
fulldump May 17, 2022
f033636
add: readme
fulldump May 17, 2022
b679075
add: Backlog
fulldump May 17, 2022
e0fb4d1
feat: non sparse index
fulldump May 17, 2022
53f54ee
chore: update backlog
fulldump May 17, 2022
b7abd80
fix: insertItem API was not returning http error
fulldump May 17, 2022
4b58603
feat: UI should be usable on mobile devices (left panel should not be…
fulldump May 18, 2022
f05d239
feat: add access log and recover from panic
fulldump May 26, 2022
d9d1ff6
feat: log to stdout instead of stderr
fulldump May 26, 2022
8e5bd3a
feat: logs with remote ip and date time in RFC3339
fulldump May 26, 2022
435ee27
fix: request time in log is now calculated properly
fulldump May 26, 2022
2d844e5
feat: implement pagination in full scan
fulldump May 27, 2022
f4b8d11
feat: insert now support batch json lines
fulldump May 27, 2022
f7582cf
refactor: print some errors
fulldump May 27, 2022
3f990da
try to fix send and receive data at the same time...
fulldump May 27, 2022
ae6ac55
fix: temporal workaround
fulldump May 27, 2022
8d651a3
feat: Filter collection by expressions (similar to connor library)
fulldump May 29, 2022
2850336
feat: small changes
fulldump Aug 22, 2022
c250050
refactor: rename go.mod package
fulldump Aug 22, 2022
af3b630
feat: add database.CreateCollection and make public database.Load
fulldump Aug 22, 2022
8687f9e
fix: ensure directory for database exist on Load()
fulldump Sep 6, 2022
693cdc1
feat: add DropCollection + PatchBy with interface
fulldump Sep 28, 2022
61b7f33
Update README.md
fulldump Oct 3, 2022
25c73ba
Update README.md
fulldump Oct 3, 2022
0953e15
Update README.md
fulldump Oct 3, 2022
edf5ff4
WIP: refactor delete and patch
fulldump Oct 5, 2022
7ade740
refactor: delete and patch
fulldump Oct 5, 2022
2253fa4
Create go.yml
fulldump Oct 5, 2022
c4d8730
Merge remote-tracking branch 'origin/master' into refactor/delete-and…
fulldump Oct 5, 2022
e6029a8
Refactor/delete and patch (#2)
fulldump Oct 5, 2022
5497ae9
doc: update backlog
fulldump Oct 5, 2022
bd0e66b
Merge branch 'refactor/delete-and-patch'
fulldump Oct 5, 2022
ecc1903
feat: abstract database service + doc
fulldump Oct 26, 2022
b8fcff6
feat: complete v1
fulldump Oct 27, 2022
94621f7
refactor: remove argument "base" from Acceptance
fulldump Oct 27, 2022
a67c1b7
feat: remove old API
fulldump Oct 27, 2022
8987b74
refactor: clean up dead code
fulldump Oct 27, 2022
792b981
doc: move examples to /doc/examples
fulldump Oct 27, 2022
1617380
doc: update readme
fulldump Oct 27, 2022
a032849
Merge pull request #3 from fulldump/feature/abstract-database-service
fulldump Oct 27, 2022
af7a5fa
feat: do not require an existing collection to create index or insert…
fulldump Nov 2, 2022
24d06d2
wip: btree index
fulldump Nov 5, 2022
c18edaf
port: add index check from saas version
fulldump Nov 5, 2022
f6bb1de
refactor: WIP
fulldump Nov 6, 2022
97a21fc
feat: fix command index + fix collection_tests
fulldump Nov 6, 2022
3fbda9b
doc: update doc
fulldump Nov 6, 2022
27bea61
feat: use btree index
fulldump Nov 6, 2022
b61deb9
doc: add new doc
fulldump Nov 6, 2022
313c851
fix get index, now it will return all index configuration
k3rn31-p4n1c Nov 7, 2022
ae2e60c
fix create index returning config data
k3rn31-p4n1c Nov 7, 2022
f617e5c
refactor: improve index interfaces
fulldump Nov 8, 2022
7806bfa
fix tests?
k3rn31-p4n1c Nov 8, 2022
b7b1743
Merge pull request #4 from fulldump/refactor/common-index-interface
alfonsocantos Nov 8, 2022
e532f56
Merge pull request #5 from fulldump/fix/create_and_get_index
alfonsocantos Nov 8, 2022
04ce3e0
doc: update doc
fulldump Nov 9, 2022
97b04b6
fix: listIndexes now return type and options
fulldump Nov 9, 2022
be5b66d
feat: simplify index creation
fulldump Nov 9, 2022
1a6a581
feat: align index responses to index creation on API layer
fulldump Nov 9, 2022
935157f
feat: add experimental action 'size'
fulldump Nov 9, 2022
729140d
feat: add number of indexes summary on collection detail
fulldump Nov 9, 2022
0ccb26d
fix: ui index
fulldump Nov 9, 2022
47bb6b7
feat: ui: add home page
fulldump Nov 9, 2022
850a8ef
fix: ui home
fulldump Nov 9, 2022
26495c4
feat: add "limit" and "skip" to btree index
fulldump Nov 11, 2022
440e4e4
feat: ui: support index btree
fulldump Nov 11, 2022
fe8b2c4
feat: btree index: implement "from" and "to"
fulldump Nov 11, 2022
fbf32f7
doc: change description
fulldump Nov 11, 2022
d7175f1
feat: ui: add pagination to btree index
fulldump Nov 11, 2022
195d0f9
refactor: improve performance: fullscan with skip
fulldump Nov 12, 2022
6a9efb1
refactor: remove dead code
fulldump Nov 12, 2022
e8b14e6
doc: work on README
fulldump Nov 15, 2022
fe066e8
feat: index not found on find
fulldump Nov 16, 2022
7ba8ee5
chore: fix typo
fulldump Nov 16, 2022
3595f70
refactor: remove dead code + move getKeys
fulldump Nov 16, 2022
c4724db
feat: apply filters to all operations
fulldump Nov 16, 2022
e591901
feat: btree: add compound indexes with reverse fields
fulldump Nov 16, 2022
33d59a4
feat: implement sparse + remove Limit,Skip from IndexBtree + tests
fulldump Nov 16, 2022
8a9ee39
feat: ui: sort collections + elapsed time + filter on btree index
fulldump Nov 16, 2022
c7e8a5b
chore: multiple works on library maintenance
fulldump Nov 17, 2022
f5f6cdf
chore: gofmt
fulldump Nov 17, 2022
13397cb
fix: index btree: reverse column order
fulldump Nov 17, 2022
f906979
feat: ui: universal find
fulldump Nov 24, 2022
79a818b
fix: btree traverse parameter hasTo
fulldump Nov 24, 2022
fa622ee
feat: ui: universal find
fulldump Nov 24, 2022
aef04d3
fix: RecoverFromPanic defer instead of go
fulldump Dec 17, 2022
5d94420
feat: implement drop index
fulldump Dec 18, 2022
3c41fd0
chore: update backlog
fulldump Dec 18, 2022
9f76416
fix: Index rollback
fulldump Jan 3, 2023
1e3b64b
fix: Index rollback should not be free the index on conflict!
fulldump Jan 9, 2023
f684a27
feat: add sha256sum to target release
fulldump Jan 9, 2023
6202543
Create FUNDING.yml
fulldump Jan 11, 2023
de86cf8
feat: optimize patch, do not persist if diff is empty
fulldump Jan 25, 2023
584006f
Merge pull request #6 from fulldump/feature/do-not-persist-patch-comm…
fulldump Jan 25, 2023
42dcd51
feat: add self signed certificate to enable http2
fulldump Jan 26, 2023
b000320
feat: experiment, insert streaming :D
fulldump Jan 26, 2023
2fa7aa6
feat: insertStream full duplex
fulldump Mar 15, 2023
482663f
feat: enable compression + upgrade box
fulldump Mar 15, 2023
e246ea6
fix: tests, suggested by chatgpt 3.5
fulldump Apr 5, 2023
f0c36e9
doc: add basic documentation and structure with chatgpt
fulldump Apr 6, 2023
b7b0247
doc: add link to the book
fulldump Apr 6, 2023
544fe93
feat: add insertFullduplex
fulldump Oct 7, 2023
d004093
deploy
fulldump Oct 7, 2023
170eb83
Update go.yml
fulldump Oct 7, 2023
7879903
fix: fullduplex with compression
fulldump Oct 7, 2023
af39ddc
Merge remote-tracking branch 'origin/master'
fulldump Oct 7, 2023
1a7279f
test: some tricks on performance :D
fulldump Feb 9, 2024
c127197
feat: defaults implementation
fulldump Feb 10, 2024
1c1d683
fix: tests
fulldump Feb 10, 2024
d77d2e3
chore: downgrade goconfig to 1.5.0 and update dependencies
fulldump Apr 28, 2024
2fb4da1
feat: add openapi endpoint
fulldump May 18, 2024
e5e5a07
fix: return content type and send servers with https
fulldump May 18, 2024
cf8448b
chore: upgrade dependencies
fulldump Dec 19, 2024
d5d90a9
chore: add docker publish
fulldump Mar 15, 2025
9d5964c
feat: implement atomic operation for patch
fulldump Mar 21, 2025
bf2e19f
fix: race condition on index map traverse
fulldump Apr 10, 2025
7081f93
chore: backport from saas
fulldump Apr 10, 2025
c316931
fix. use IndexSyncMap by default
fulldump Apr 10, 2025
6e9be28
Brand new front (#9)
fulldump Sep 30, 2025
acd4e0c
social links (#11)
fulldump Sep 30, 2025
e342476
new ui (#12)
fulldump Sep 30, 2025
3d426cc
new ui (#15)
fulldump Sep 30, 2025
aaafb16
copy from other branch
fulldump Oct 1, 2025
ee890f0
Add Go, Python, and PHP tabs to activity modal
alfredomoraleja Oct 1, 2025
e92b40c
Merge branch 'codex/add-golang,-python,-php-to-activitymodal' into fe…
fulldump Oct 1, 2025
b0630c7
Merge pull request #16 from alfredomoraleja/feat/dark-light-modes
fulldump Oct 1, 2025
2f4abf0
add umami
fulldump Oct 1, 2025
0ebb880
Replace axios with fetch
alfredomoraleja Oct 1, 2025
bd89282
Merge pull request #17 from alfredomoraleja/codex/remove-axios-and-us…
fulldump Oct 1, 2025
2124402
Merge pull request #50 from alfredomoraleja/codex/remove-axios-and-us…
fulldump Oct 2, 2025
2d22121
Merge pull request #18 from alfredomoraleja/master
fulldump Oct 2, 2025
acedff0
feat: upgrade box + add jsonv2 experiment dependency
fulldump Oct 3, 2025
abff3e0
opt: collection insert: calculate defaults if needed
fulldump Oct 4, 2025
865f9a7
update backlog
fulldump Oct 4, 2025
8fe96b7
opt: avoid double marshal
fulldump Oct 4, 2025
6fd607f
chore: update speedup
fulldump Oct 4, 2025
af52127
Merge pull request #19 from alfredomoraleja/opt/collection-insert-def…
fulldump Oct 4, 2025
ed3c7d2
opt: insert: write raw json bytes
fulldump Oct 4, 2025
746b42e
Merge pull request #20 from alfredomoraleja/opt/insert-write-raw-bytes
fulldump Oct 4, 2025
81f45c6
feat: add alternatives on the insert handler
fulldump Oct 4, 2025
778d427
chat gpt suggestion
fulldump Oct 6, 2025
958c0bc
Merge pull request #21 from alfredomoraleja/opt/insert-write-result
fulldump Oct 6, 2025
529f8ea
streamtest now creates collection
fulldump Oct 7, 2025
20ec5a6
better local test + disable compression by default
fulldump Oct 7, 2025
d98742a
Merge pull request #22 from alfredomoraleja/better_streamtest
fulldump Oct 7, 2025
1e96e12
reuse json encoder
fulldump Oct 7, 2025
46400db
Merge pull request #23 from alfredomoraleja/opt/collection-reuse-json…
fulldump Oct 7, 2025
7fcbf8e
Add document lookup by ID across API and UI
alfredomoraleja Oct 9, 2025
f3cdf04
Merge pull request #59 from alfredomoraleja/codex/implement-next-feat…
fulldump Oct 9, 2025
f56cd8d
move instanciation to bootstrap
fulldump Oct 18, 2025
9e5563f
Merge pull request #24 from alfredomoraleja/refactor/add-bootstrap
fulldump Oct 18, 2025
8cf6665
opt: inserts with pool and buffers
fulldump Oct 18, 2025
f56696d
use json2 and reuse command
fulldump Oct 18, 2025
a949db6
Merge pull request #25 from fulldump/opt/reduce-startup-time
fulldump Oct 18, 2025
c4554c0
Merge pull request #26 from alfredomoraleja/master
fulldump Oct 18, 2025
1f5fcf7
Add patch benchmark harness
alfredomoraleja Oct 18, 2025
ba574c7
refactor benchmark
fulldump Oct 19, 2025
7a0128d
Merge pull request #28 from alfredomoraleja/codex/prepare-benchmark-f…
fulldump Oct 19, 2025
0ec9b99
Optimize patch handling
alfredomoraleja Oct 19, 2025
8393843
Merge pull request #29 from alfredomoraleja/codex/optimize-patch-impl…
fulldump Oct 19, 2025
6351af8
upgrade toolchain to go 1.25.2
fulldump Oct 19, 2025
2183206
fix: temporary workaround: use repo github.com/go-json-experiment/jso…
fulldump Oct 19, 2025
23e9c21
Merge pull request #30 from alfredomoraleja/use-go-json-experiment-al…
fulldump Oct 19, 2025
8b227c0
Add backlog items for journal invalidation and snapshots
alfonsocantos Oct 31, 2025
30a1c70
Merge pull request #90 from alfredomoraleja/codex/add-features-to-inc…
alfonsocantos Oct 31, 2025
3306ce2
Merge pull request #31 from alfredomoraleja/master
alfonsocantos Oct 31, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
13 changes: 13 additions & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# These are supported funding model platforms

github: [fulldump] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
25 changes: 25 additions & 0 deletions .github/workflows/go.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Go

on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]

jobs:

build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: 1.21.2

- name: Build
run: make build

- name: Test
run: make test
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
/.idea
/bin
/data
/dataarchive
/collection/temp-*
12 changes: 12 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# AGENTS Instructions

These instructions apply to all work in this repository.

## Development Guidelines
- Format Go code with `gofmt -w` before committing.
- Run `make test` and ensure it passes.
- The language for UI must be American English.
- Commit messages should be in English and concise.
- Pull request summaries must list major changes as bullet points.
- Avoid introducing external libraries whenever possible; if a library is
required, the reason must be well justified.
50 changes: 50 additions & 0 deletions BACKLOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# InceptionDB Backlog

## Must have

* ~~Filter collection by perfect match subdocument~~
* ~~Fullscan with offset/skip and limit~~
* ~~Authentication and logical collection groups (databases)~~
* Index management in UI
* BUGFIX: when document is modified to remove field from non-sparse index, it should NOT remove the field!!!
* ~~BTree index~~
* Allow delete and patch operations to mark journal entries as invalid so that rebuild skips invalidated records.
* Periodically replace patch chains with snapshot inserts after N operations to limit startup replay costs.

## Should have

* ~~Filter collection by expressions (similar to connor library)~~
* Quotas
* Max memory: per collection, also per database?
* Max disk: per collection, also per database?
* Max rows: per collection, also per database?
* Max document size: per collection and per database
* Max collections per database
* Default primary key on field _id (require non sparse indexes)
* ~~UI should be usable on mobile devices (left panel should not be always present)~~

## Could have

* ~~Implement not sparse indexes~~
* Filter by JS function
* Patch by JS function
* ~~Support UTF-8 in collection names~~
* ~~Compound indexes (key is made by multiple fields combined)~~
* Automatic _id index can have multiple value sources (configured at collection level)
* uuid
* autoincrement
* unixnano
* Ensure thread safety and improve performance with Map from standard library
* ~~Insert multiple documents per request~~
* Return http.StatusServiceUnavailable while loading collections
* Insert-only collections to avoid patch overhead.

## Won't have

* Disk sync indexes
* Instantaneous consistency



## Optimizations
* collection insert: calculating defaults only when needed: speedup 10.16%
15 changes: 15 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
FROM golang:1.24.1 AS builder

WORKDIR /app

COPY . .

RUN make build

FROM scratch

COPY --from=builder /app/bin/inceptiondb /inceptiondb

ENV HTTPADDR=:8080

CMD ["/inceptiondb"]
Loading
Loading