Kerrick Staley
1eac36c5d7
Add comment explaining why sfld column has type integer
...
The `notes.sfld` column in the `collection.anki2` database has type `integer`, even though it contains text. This is [something SQLite allows](https://dba.stackexchange.com/questions/106364/text-string-stored-in-sqlite-integer-column ) and was done to allow integer values to sort numerically. Add a comment explaining this.
2021-01-25 18:39:59 +08:00
Damien Elmes
ef9f6b022b
coerce some more invalid decimal values to ints during sync
2021-01-25 09:43:50 +10:00
abdo
0ac97cf358
clear_tag() should be case-insensitive
2021-01-18 03:52:28 +03:00
Damien Elmes
9f964916ab
simplify unused tags and DB check
...
- backend routines should contain minimal logic, and should call
into a routine on the collection
- instead of copying the giant-string approach the Python code was taking,
we use a HashSet to keep track of seen tags as we loop through the
notes, which should be more efficient
2021-01-16 20:38:16 +10:00
Damien Elmes
d80a5c56e3
no need for separate all_tags_sorted()
...
tag is the primary key, so sqlite will give it back to us in
sorted order already.
2021-01-16 19:46:58 +10:00
abdo
e018ea94b6
Merge branch 'master' of https://github.com/ankitects/anki into tagtree
2021-01-15 01:12:01 +03:00
abdo
ee3c019804
Remove Default impl of Tag
2021-01-14 07:04:55 +03:00
abdo
9c1d7c522a
Refactor code for clearing unused tags and saving collapse state
2021-01-14 07:04:14 +03:00
abdo
9a68d84483
Keep tags in human form and update the tags table structure
...
See https://github.com/ankitects/anki/pull/900#issuecomment-758284016
- Leave tag names alone and add the collapsed and config columns to the tags table.
- Update The DB check code to preserve the collapse state of used tags.
- Add a simple test for clearing tags and their children
2021-01-12 23:12:35 +03:00
Damien Elmes
09dfa9ced6
allow normal sync tests to run offline
2021-01-12 18:47:08 +10:00
abdo
97b4c2124c
sql formatting
2021-01-09 17:38:16 +03:00
abdo
1be789f25f
Move sql code for upgrading to schema 17 to a separate file
2021-01-09 17:10:16 +03:00
abdo
c6e3d55400
fill_missing_tags's input should be sorted
...
I assumed that fill_missing_tags will work correctly with un unsorted
tag list previously so I replaced the all_tags_sorted call, but take the following the list for example:
["foo::bar", "foo"]
This will cause "foo" to be counted like a missing tag, since it's
encountered the first time when looking at "foo::bar"", and its config
and other associated data will be lost.
2021-01-09 17:10:16 +03:00
abdo
b33267f754
Do not check for missing tag parents at registration time
2021-01-09 17:10:16 +03:00
abdo
b276ce3dd5
Hierarchical tags
2021-01-09 17:10:13 +03:00
Damien Elmes
56e4e2d518
reformat .sql files
2021-01-09 14:08:55 +10:00
Damien Elmes
dee0a2fc18
fix reposition not being applied in browser sort order
...
https://forums.ankiweb.net/t/reposition-function-not-working/5817
Also changed id->cid in the non-sorting case, as otherwise when
using all_searched_cards() on a sorted list, the results will be wrong.
2020-12-16 10:58:46 +10:00
Damien Elmes
a9ea8e11a2
fix filtered decks not honoring sort order
...
https://forums.ankiweb.net/t/2-1-36-filtered-decks-bug/5649/
2020-12-09 22:50:49 +10:00
Damien Elmes
009906d0c2
fix duplicate search not checking first field
...
Thanks to abdo for the initial solution. Closes #838
2020-11-30 09:27:10 +10:00
Damien Elmes
c157ccb3f5
handle notes with invalid utf8
2020-11-06 10:21:51 +10:00
Damien Elmes
90fa38495e
reindex when checking database
...
Came across a user with a corrupt index:
sqlite> pragma integrity_check;
integrity_check = wrong # of entries in index ix_revlog_cid
integrity_check = wrong # of entries in index ix_cards_sched
This is not picked up by a quick check, and a vacuum does not
fix it, but a reindex does.
AnkiWeb currently performs a full check when a file is uploaded
to it, so this was leading to "corrupt" to show up when syncing
the collection, with a local DB check not reporting/fixing the issue.
2020-10-05 17:40:43 +10:00
Damien Elmes
cc3fdb2f37
rename downgrade method for clarity
2020-09-22 15:53:26 +10:00
Damien Elmes
76acf04dc0
update schema to fix default initial ease in deck configs
...
Closes #766
- changes the on-disk representation from % to a multiplier,
eg 250 -> 2.5, as this is consistent with the other options
- resets deck configs at or below 1.3 to 2.5
- for any cards that were using a reset deck config, reset their
current factor if it's at or below 2.0x. The cutoff is arbitrary,
and just intended to make sure we catch cards the user has rated
Easy on multiple times. The existing due dates are left alone.
2020-09-22 08:16:39 +10:00
Damien Elmes
755a58b96c
fix incorrect SQL in previous change
2020-09-19 12:27:00 +10:00
Damien Elmes
91759694a1
congrats_info() failed if learning card had negative due
...
https://forums.ankiweb.net/t/integralvalueoutofrange-for-filtered-deck/3353
2020-09-18 20:14:35 +10:00
Damien Elmes
56ceb6ba76
set_deck()
2020-09-03 17:42:46 +10:00
Damien Elmes
b65174a026
move card sorting and resetting to backend
2020-09-03 15:54:15 +10:00
Damien Elmes
ce49ca9401
log manual reschedule, but ignore the log entry in the stats
2020-09-02 17:56:23 +10:00
Damien Elmes
a834df60ce
rename some card+note fields in backend
2020-09-01 10:24:38 +10:00
Damien Elmes
d3dede057a
move bury/suspend into backend
2020-09-01 10:24:38 +10:00
Damien Elmes
ccfa989c62
move unbury/unsuspend routines into backend
2020-09-01 10:24:38 +10:00
Damien Elmes
b0a3861734
handle null return from sum() in other columns
2020-09-01 10:24:38 +10:00
Damien Elmes
e5685254c6
reimplement congrats screen in Rust+Typescript
2020-09-01 10:24:38 +10:00
Damien Elmes
4662a9fe1a
check if we need to unbury at the start of the sync process
...
https://forums.ankiweb.net/t/bug-buried-cards-in-filtered-decks-not-being-unburied-next-day/2541/24
2020-08-28 21:09:07 +10:00
Damien Elmes
134765036c
don't crash when upgrading collection with ntid of 0
2020-08-23 14:14:44 +10:00
Damien Elmes
9334272a27
generate extra templates when recovering notetype
2020-08-10 13:42:37 +10:00
Damien Elmes
0180868b60
fix negative review times in DB check
2020-08-07 14:37:44 +10:00
Damien Elmes
a1866e72fd
handle preview repeat in deck list
2020-07-30 09:11:13 +10:00
Damien Elmes
5574c0dfb3
set schema on collection creation
2020-07-03 11:55:27 +10:00
Damien Elmes
0f1f80aebc
handle revlog entries with negative review times
2020-06-29 15:48:01 +10:00
Damien Elmes
0cab26d40c
cards added graph
2020-06-29 15:48:01 +10:00
Damien Elmes
82568a1f3e
experiment with exposing raw card/revlog data to frontend
2020-06-29 15:48:00 +10:00
Damien Elmes
510f8b86cb
some initial work on updating the graphs
2020-06-29 15:48:00 +10:00
Damien Elmes
df009d142c
formatting fix
2020-06-22 11:58:31 +10:00
Damien Elmes
26fc6609a7
move revlog out of sync code, and add enums
...
and remove type=4, which does not appear to be used
2020-06-16 16:31:36 +10:00
Damien Elmes
b51f03085e
migrate card stats to backend
...
Currently this renders the HTML directly like the previous Python
implementation - doing it in JS would probably make more sense in the
future.
2020-06-15 17:22:16 +10:00
Damien Elmes
263bfb2e8e
on upgrade, mark decks modified that are renamed
2020-06-14 14:48:58 +10:00
Damien Elmes
816cec4a58
fix review cards with high intervals not being reset properly
...
would lead to a "fixed .. with invalid card property" message that
didn't go away
2020-06-09 20:11:26 +10:00
Damien Elmes
7c444b4d35
add progress to db check
2020-06-08 21:07:36 +10:00
Damien Elmes
1fe18718f7
add daily count updating to backend
2020-06-05 19:49:53 +10:00