QEloquent 1.1.0
Qt most flexible ORM.
Loading...
Searching...
No Matches
namingconvention.h
1#ifndef QLOQUENT_NAMINGCONVENTION_H
2#define QLOQUENT_NAMINGCONVENTION_H
3
4#include <QEloquent/global.h>
5
6#include <QMap>
7
8namespace QEloquent {
9
16class QELOQUENT_EXPORT NamingConvention
17{
18public:
20 virtual ~NamingConvention() = default;
21
23 virtual QString tableName(const QString &className) const = 0;
25 virtual QString fieldName(const QString &propertyName, const QString &tableName) const = 0;
26
28 virtual QString primaryFieldName(const QString &tableName) const = 0;
30 virtual QString foreignFieldName(const QString &primaryFieldName, const QString &tableName) const = 0;
31
33 virtual QString pivotTableName(const QString &table1, const QString &table2) const = 0;
34
36 virtual QString propertyName(const QString &fieldName, const QString &tableName) const = 0;
38 virtual QString foreignPropertyName(const QString &primaryPropertyName, const QString &className) const;
39
41 static NamingConvention *convention(const QString &name = QStringLiteral("Laravel"));
42
43 static QString pascalFromCamel(const QString &str);
44 static QString pascalFromSnake(const QString &str);
45 static QString camelFromPascal(const QString &str);
46 static QString camelFromSnake(const QString &str);
47 static QString snakeFromPascal(const QString &str);
48 static QString snakeFromCamel(const QString &str);
49
50private:
51 class ConventionList final : public QMap<QString, NamingConvention *> {
52 public:
53 ConventionList(std::initializer_list<std::pair<QString, NamingConvention *>> list)
54 : QMap(list) {}
55
56 ~ConventionList() {
57 QList<NamingConvention *> conventions = values();
58 while (!conventions.isEmpty()) {
59 NamingConvention *convention = conventions.takeFirst();
60 conventions.removeAll(convention);
61 delete convention;
62 }
63 }
64 };
65
66 static ConventionList s_conventions;
67};
68
69} // QEloquent namespace
70
71#endif // QLOQUENT_NAMINGCONVENTION_H
Interface for naming conventions.
Definition namingconvention.h:17
virtual QString pivotTableName(const QString &table1, const QString &table2) const =0
Returns the name of the pivot table for a many-to-many relationship.
virtual QString propertyName(const QString &fieldName, const QString &tableName) const =0
Returns the property name for a given field name in a table.
virtual QString tableName(const QString &className) const =0
Returns the table name for a given class name.
virtual QString foreignFieldName(const QString &primaryFieldName, const QString &tableName) const =0
Returns the foreign key field name referring to another table.
virtual QString primaryFieldName(const QString &tableName) const =0
Returns the name of the primary key field for a table.
virtual ~NamingConvention()=default
Virtual destructor.
virtual QString fieldName(const QString &propertyName, const QString &tableName) const =0
Returns the field name for a given property name in a table.