Yu-Gi-Oh! Deck Building and Card Inventory Management web interface written in Common Lisp, utilizing HTMX.
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

503 rindas
15KB

  1. #|
  2. src/models/packages.lisp
  3. Models Main Package List
  4. |#
  5. (in-package #:cl-user)
  6. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  7. (defpackage #:cl-deck-builder2.models.generics
  8. (:use #:cl)
  9. (:export #:deck-id-of
  10. #:name-of
  11. #:ygo-archetype-of
  12. #:ygo-atk-of
  13. #:ygo-attribute-of
  14. #:ygo-def-of
  15. #:ygo-description-of
  16. #:ygo-frame-type-of
  17. #:ygo-level-of
  18. #:ygo-linkmarkers-of
  19. #:ygo-linkval-of
  20. #:ygo-passcode-of
  21. #:ygo-price-of
  22. #:ygo-race-of
  23. #:ygo-scale-of
  24. #:ygo-type-of))
  25. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  26. (defpackage #:cl-deck-builder2.models.registered-table
  27. (:use #:cl
  28. #:cl-deck-builder2.db
  29. #:cl-deck-builder2.models.generics)
  30. (:import-from #:cl-deck-builder2.toolkit
  31. #:relative-pathname)
  32. (:export #:registry
  33. #:registered-classes
  34. #:registered-table-class
  35. #:ensure-tables-exist
  36. #:migration-expressions
  37. #:migrate-table
  38. #:export-registered-classes
  39. #:export-registered-classe-to-file))
  40. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  41. (defpackage #:cl-deck-builder2.models.attachment
  42. (:use #:cl
  43. #:cl-deck-builder2.models.generics)
  44. (:import-from #:cl-deck-builder2.models.registered-table
  45. #:registered-table-class)
  46. (:import-from #:cl-deck-builder2.db
  47. #:create-dao)
  48. (:export #:attachment
  49. #:create-attachment
  50. #:attachment-valid-p))
  51. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  52. (defpackage #:cl-deck-builder2.models.category
  53. (:use #:cl
  54. #:cl-deck-builder2.models.generics)
  55. (:import-from #:cl-deck-builder2.db
  56. #:create-dao
  57. #:select-dao)
  58. (:import-from #:cl-deck-builder2.models.registered-table
  59. #:registered-table-class)
  60. (:export #:category
  61. #:category-name-of
  62. #:category-left-of
  63. #:category-right-of
  64. #:category-rename
  65. #:category-insert-right-of
  66. #:category-insert-new-child
  67. #:category-insert-fake-data
  68. #:category-full-tree
  69. #:category-leaf-nodes
  70. #:category-full-tree-format
  71. #:category-delete-tree
  72. #:category-delete-and-reparent
  73. #:category-tree-depth
  74. #:category-node-depth
  75. #:category-subtree-depth
  76. #:category-subtree-max-depth
  77. #:by-category))
  78. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  79. (defpackage #:cl-deck-builder2.models.ygoprodeck.fields
  80. (:use #:cl
  81. #:cl-deck-builder2.db
  82. #:cl-deck-builder2.models.generics)
  83. (:import-from #:cl-deck-builder2.models.registered-table
  84. #:registered-table-class)
  85. (:export #:variant
  86. #:name-of
  87. #:define-variant-list
  88. #:variant-condition
  89. #:variant-language
  90. #:ygo-banlist-name
  91. #:ygo-format-name
  92. #:ygo-linkmarker-name
  93. #:ygo-set-rarity-code))
  94. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  95. (defpackage #:cl-deck-builder2.models.ygoprodeck
  96. (:use #:cl
  97. #:cl-deck-builder2.db
  98. #:cl-deck-builder2.models.generics
  99. #:cl-deck-builder2.models.registered-table)
  100. (:export :ygo-info
  101. #:ygo-description-of
  102. #:ygo-frame-type-of
  103. #:ygo-type-of
  104. #:ygo-passcode-of
  105. #:name-of
  106. #:ygo-race-of
  107. #:ygo-archetype-of
  108. #:ygo-attribute-of
  109. #:ygo-linkmarkers-of
  110. #:ygo-atk-of
  111. #:ygo-def-of
  112. #:ygo-level-of
  113. #:ygo-linkval-of
  114. #:ygo-scale-of))
  115. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  116. (defpackage #:cl-deck-builder2.models.ygoprodeck.classes
  117. (:use #:cl
  118. #:cl-deck-builder2.models.generics
  119. #:cl-deck-builder2.models.ygoprodeck.fields)
  120. (:import-from #:cl-deck-builder2.models.registered-table
  121. #:registered-table-class)
  122. (:import-from #:cl-deck-builder2.models.ygoprodeck.fields
  123. #:variant-condition
  124. #:ygo-banlist-name
  125. #:ygo-format-name
  126. #:ygo-linkmarker-name
  127. #:ygo-set-rarity-code)
  128. (:import-from :cl-deck-builder2.toolkit
  129. :currency-deflate
  130. :currency-inflate)
  131. (:export #:ygo-card-name
  132. #:ygo-card-type
  133. #:ygo-card-frame-type
  134. #:ygo-card-race
  135. #:ygo-card-archetype
  136. #:ygo-card-attribute
  137. #:ygo-card
  138. #:ygo-card-misc-info
  139. #:ygo-set-name
  140. #:ygo-set-code
  141. #:ygo-set-rarity-code
  142. #:ygo-set-rarity
  143. #:ygo-set-edition
  144. #:ygo-set
  145. #:ygo-set-item
  146. #:ygo-linkmarker
  147. #:ygo-format
  148. ;; #:ygo-banlist-name
  149. ;; #:ygo-format-name
  150. ;; #:ygo-linkmarker-name
  151. #:ygo-banlist
  152. #:ygo-alternative-artwork
  153. #:ygo-price
  154. ;; Accessor Methods
  155. #:ygo-alternate-id-of
  156. #:ygo-archetype-of
  157. #:ygo-atk-of
  158. #:ygo-attribute-of
  159. #:ygo-ban-goat
  160. #:ygo-ban-ocg
  161. #:ygo-ban-tcg
  162. #:ygo-beta-id-of
  163. #:ygo-beta-name-of
  164. #:ygo-card-type-of
  165. #:ygo-code-of
  166. #:ygo-common-charity-format
  167. #:ygo-def-of
  168. #:ygo-desc-of
  169. #:ygo-downvotes-of
  170. #:ygo-duel-links-format
  171. #:ygo-edison-format
  172. #:ygo-edition-of
  173. #:ygo-frame-type-of
  174. #:ygo-goat-format
  175. #:ygo-has-effect
  176. #:ygo-is-staple
  177. #:ygo-konami-id-of
  178. #:ygo-level-of
  179. #:ygo-linkmarker-bottom
  180. #:ygo-linkmarker-bottom-left
  181. #:ygo-linkmarker-bottom-right
  182. #:ygo-linkmarker-left
  183. #:ygo-linkmarker-right
  184. #:ygo-linkmarker-top
  185. #:ygo-linkmarker-top-left
  186. #:ygo-linkmarker-top-right
  187. #:ygo-name-of
  188. #:ygo-ocg-date-of
  189. #:ygo-ocg-format
  190. #:ygo-ocg-goat-format
  191. #:ygo-passcode-of
  192. #:ygo-question-atk
  193. #:ygo-question-def
  194. #:ygo-race-of
  195. #:ygo-rarity-of
  196. #:ygo-scale-of
  197. #:ygo-set-code-of
  198. #:ygo-set-rarity-code-of
  199. #:ygo-speed-duel-format
  200. #:ygo-tcg-date-of
  201. #:ygo-tcg-format
  202. #:ygo-treated-as
  203. #:ygo-upvotes-of
  204. #:ygo-url-of
  205. #:ygo-views-of
  206. #:ygo-viewsweek-of
  207. #:ygo-amazon-price-of
  208. #:ygo-cardmarket-price-of
  209. #:ygo-coolstuffinc-price-of
  210. #:ygo-ebay-price-of
  211. #:ygo-tcgplayer-price-of
  212. #:ygo-price-of
  213. #:qty-of
  214. #:item-of
  215. #:variant-of
  216. #:sell-price-of
  217. #:opt-qty-of
  218. #:buy-price-of)
  219. (:documentation "New YGOProDeck database schema - classes."))
  220. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  221. (defpackage #:cl-deck-builder2.models.ygoprodeck.methods
  222. (:use #:cl
  223. #:cl-deck-builder2.db
  224. #:cl-deck-builder2.models.generics
  225. #:cl-deck-builder2.models.ygoprodeck.classes
  226. #:cl-deck-builder2.models.ygoprodeck.fields)
  227. (:import-from #:cl-deck-builder2.models.registered-table
  228. #:registered-classes
  229. #:registry)
  230. (:export #:print-object
  231. #:split-code
  232. #:ygo-card
  233. #:ygo-card-by-name
  234. #:ygo-card-by-passcode
  235. #:ygo-card-names-by-deck-id
  236. #:ygo-card-names-from-list
  237. #:ygo-card-sets
  238. #:ygo-set
  239. #:ygo-set-by-id
  240. #:ygo-set-by-code
  241. #:ygo-set-by-name
  242. #:ygo-set-by-passcode
  243. #:ygo-select-set-item)
  244. (:documentation "New YGOProDeck database schema - methods."))
  245. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  246. (defpackage #:cl-deck-builder2.models.ygoprodeck.cardinfo
  247. (:use #:cl)
  248. (:local-nicknames (#:v #:org.shirakumo.verbose))
  249. (:export #:cardinfo
  250. #:cardinfo-input
  251. #:cardinfo-output
  252. #:cardinfo-input-exists-p
  253. #:cardinfo-output-exists-p
  254. #:cardinfo-json
  255. #:cardinfo-list
  256. #:cardinfo-download
  257. #:cardinfo-cleanup
  258. #:cardinfo-convert
  259. #:cardinfo-update-and-cleanup))
  260. (defpackage #:cl-deck-builder2.models.ygoprodeck.json
  261. (:use #:cl
  262. #:cl-deck-builder2.db
  263. #:cl-deck-builder2.toolkit
  264. #:cl-deck-builder2.models.generics
  265. #:cl-deck-builder2.models.ygoprodeck.fields
  266. #:cl-deck-builder2.models.ygoprodeck.cardinfo
  267. #:cl-deck-builder2.models.ygoprodeck.classes)
  268. (:local-nicknames (#:v #:org.shirakumo.verbose))
  269. (:export #:cardinfo-import))
  270. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  271. (defpackage #:cl-deck-builder2.models.user
  272. (:use #:cl
  273. #:cl-deck-builder2.models.generics
  274. #:cl-deck-builder2.db)
  275. (:import-from #:cl-deck-builder2.models.registered-table
  276. #:registered-table-class)
  277. (:import-from :mito-auth
  278. :has-secure-password)
  279. (:export #:user
  280. #:name-of
  281. #:user-email-of
  282. #:user-roles-of
  283. #:role
  284. #:user-role
  285. #:user-role-user
  286. #:user-role-role
  287. #:user-admin-p
  288. #:user-verified-p
  289. #:create-user
  290. #:find-user
  291. #:create-role
  292. #:add-role))
  293. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  294. (defpackage #:cl-deck-builder2.models.feedback
  295. (:use #:cl)
  296. (:import-from #:cl-deck-builder2.db
  297. #:create-dao)
  298. (:import-from #:cl-deck-builder2.models.registered-table
  299. #:registered-table-class)
  300. (:import-from #:cl-deck-builder2.models.user
  301. #:user)
  302. (:export #:feedback
  303. #:feedback-body-of
  304. #:feedback-user-of
  305. #:create-feedback))
  306. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  307. ;; This package doesn't touch the DB ... yet
  308. (defpackage #:cl-deck-builder2.models.qr-code
  309. (:use :cl
  310. :cl-deck-builder2.db)
  311. (:local-nicknames (#:v #:org.shirakumo.verbose))
  312. (:import-from :cl-deck-builder2.toolkit
  313. :query-param)
  314. (:export :qr-settings
  315. :qr-string
  316. :qr-min-version
  317. :qr-ec-level
  318. :qr-encoding-mode
  319. :qr-mask-number
  320. :qr-to-plist
  321. :qr-generate))
  322. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  323. (defpackage #:cl-deck-builder2.models.ydk
  324. (:use #:cl
  325. #:cl-deck-builder2.db
  326. #:cl-deck-builder2.models.generics
  327. #:cl-deck-builder2.models.registered-table
  328. #:cl-deck-builder2.toolkit)
  329. (:import-from #:cl-deck-builder2.models.category
  330. #:category)
  331. (:import-from #:cl-deck-builder2.models.ygoprodeck
  332. #:ygo-info)
  333. (:export #:ydk
  334. #:deck-item
  335. #:ydk-deck
  336. #:deck-id-of
  337. #:deck-kind-of
  338. #:deck-passcode-of
  339. #:ydk-created-by
  340. #:ydk-name-of
  341. #:ydk-id-of
  342. #:ydk-deck-delete-from
  343. #:ydk-deck-item-delete-from
  344. #:ydk-deck-delete-by-id
  345. #:ydk-deck-delete-by-name
  346. #:ydk-deck-by-id
  347. #:ydk-deck-by-name
  348. #:ydk-deck-info-by-id
  349. #:ydk-rename-deck
  350. #:ydk-add
  351. #:ydk-clear
  352. #:ydk-sync
  353. #:ydk-main-deck-of
  354. #:ydk-extra-deck-of
  355. #:ydk-side-deck-of
  356. #:ydk-category-of
  357. #:ydk-all
  358. #:ydk-concatenate
  359. #:ydk-unique
  360. #:ydk-query
  361. #:ydk-sorted
  362. #:ydk-delete
  363. #:ydk-delete-index
  364. #:ydk-table-ensure-exists
  365. #:ydk-table-drop
  366. #:ydk-table-delete
  367. #:ydk-table-select
  368. #:ydk-table-select-count
  369. #:ydk-to-kde)
  370. (:documentation "This model is just a thin wrapper around YDK format.
  371. The YDK Format is like this:
  372. created by...
  373. #main
  374. <a series of passcodes>
  375. #extra
  376. <a series of passcodes>
  377. !side
  378. <a series of passcodes>
  379. TODO CL-YDK + YDK-STORAGE-MIXIN?"))
  380. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  381. ;; Psuedo class for working with the SQLite database.
  382. ;; This will probably go away once we switch over to MariaDB.
  383. (defpackage #:cl-deck-builder2.models.sqlite-schema
  384. (:use :cl
  385. :cl-deck-builder2.db)
  386. (:export #:sqlite-schema
  387. #:kind-of
  388. #:sql-of
  389. #:rootpage-of
  390. #:table-names))
  391. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  392. (defpackage #:cl-deck-builder2.models.constructed-decks
  393. (:use #:cl
  394. #:cl-deck-builder2.db
  395. #:cl-deck-builder2.toolkit
  396. #:cl-deck-builder2.models.generics
  397. #:cl-deck-builder2.models.registered-table
  398. #:cl-deck-builder2.models.ygoprodeck.classes
  399. #:cl-deck-builder2.models.ygoprodeck.methods)
  400. (:import-from #:cl-deck-builder2.models.category
  401. #:category)
  402. (:import-from #:cl-deck-builder2.models.ydk
  403. #:deck-item
  404. #:deck-id-of
  405. #:deck-passcode-of
  406. #:ydk-category-of
  407. #:ydk-created-by
  408. #:ydk-name-of
  409. #:ydk-deck)
  410. (:local-nicknames (#:v #:org.shirakumo.verbose))
  411. (:export #:constructed-deck
  412. #:constructed-deck-item
  413. #:constructed-deck-intermediate
  414. #:cdi-deck-item
  415. #:cdi-deck-set
  416. #:cdi-deck-set-item
  417. #:cdi-deck-condition
  418. #:cdi-deck-card
  419. #:constructed-deck-as-cdi-list
  420. ;; :deck-category-of
  421. ;; :deck-created-by
  422. ;; :deck-id-of
  423. :deck-name-of
  424. ;; :deck-sell-price
  425. :deck-sell-price-of
  426. :deck-sold
  427. ;; :ydk-deck-of
  428. ;; :ygo-card-of
  429. ;; #:sold-deck
  430. #:ydk-deck-pull-from-inventory
  431. #:find-any-invalid-qtys
  432. #:deck-to-pull-set-items-qty-as-alist
  433. #:deck-to-pull-desired-qty-as-alist
  434. #:subtract-desired-from-set-item-qty-as-alist
  435. #:valid-pull-p
  436. #:cdi-pull-from-inventory))
  437. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  438. (uiop:define-package #:cl-deck-builder2.models
  439. (:use #:cl)
  440. (:use-reexport #:cl-deck-builder2.models.attachment
  441. #:cl-deck-builder2.models.category
  442. #:cl-deck-builder2.models.constructed-decks
  443. #:cl-deck-builder2.models.feedback
  444. #:cl-deck-builder2.models.qr-code
  445. #:cl-deck-builder2.models.registered-table
  446. #:cl-deck-builder2.models.sqlite-schema
  447. #:cl-deck-builder2.models.user
  448. #:cl-deck-builder2.models.ydk
  449. #:cl-deck-builder2.models.ygoprodeck
  450. #:cl-deck-builder2.models.ygoprodeck.fields
  451. #:cl-deck-builder2.models.ygoprodeck.cardinfo
  452. #:cl-deck-builder2.models.ygoprodeck.json
  453. ;; TODO replace ygoprodeck with ygoprodeck2
  454. #:cl-deck-builder2.models.ygoprodeck.classes
  455. #:cl-deck-builder2.models.ygoprodeck.methods))